Skip to content

Route patch-event-id logic update;#133

Open
CaseAsLimbo wants to merge 11 commits into
mainfrom
fix/patch-event-id
Open

Route patch-event-id logic update;#133
CaseAsLimbo wants to merge 11 commits into
mainfrom
fix/patch-event-id

Conversation

@CaseAsLimbo

@CaseAsLimbo CaseAsLimbo commented Jul 12, 2026

Copy link
Copy Markdown

Изменения

  • Добавлена логика обноления связанных с событием room, group и lecturer.
  • Исправлены тесты, теперь корректно проверяется обновление room, group и lecturer.
  • Добавлена фикстура для автоматического запуска и настройки контейнера в БД.
  • Небольшой фикс известного бага, связанный с новой версией fastapi.

Детали реализации

Ранее при patch запросе происходило только обновление таблицы Event. В ней присутствуют колонки name, start_ts, end_ts и таковые обновлялись корректно. Однако связанные с Событием room,group и lectuer(далее артефакты) хранятся в атрибутах с relationship() и - они отсутствуют в БД. Эти атрибуты хранят списки связующих таблиц EventsRooms, EventsGroups и EventsLecturers. Для примера EventsRooms это таблица для связи многие ко многим, где всего два столбца: внешний ключ event_id, внешний ключ room_id(аналогично в других). Получается связь таблиц Event <--> EventsRooms <--> Rooms.
Итак, чтобы обновить артефакты события требуется сравнить list[int]] передаваемый в теле patch запроса и список id принадлежащих объектам хранящимся в атрибуте артефакта у таблицы Event(например для атрибута room в таблице Event, это будут объекты EventsRooms, то есть список их атрибутов room_id) . Те id, которые присутствуют в старом списке и отсутствуют в новом идут на удаление, те id которые присутствуют в новом списке и отсутствуют в старом идут на создание, а совпадающие id остаются нетронутыми. В ручке сейчас реализиована такая логика для каждого артефакта события.

Вопросики

  • Может ли быть событие без одного или нескольких артефактов, то есть с пустым room, group и lecturer?

Check-List

  • Вы проверили свой код перед отправкой запроса?
  • Вы написали тесты к реализованным функциям?
  • Вы не забыли применить форматирование black и isort для Back-End или Prettier для Front-End?

@github-actions

Copy link
Copy Markdown

💩 Code linting failed, use black and isort to fix it.

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown

Code Coverage

Coverage Report
FileStmtsMissCoverMissing
calendar_backend
   __main__.py660%1–16
   exceptions.py13285%8, 14
calendar_backend/methods
   list_calendar.py704930%28–51, 58–64, 71–76, 85–98, 102–113
   utils.py352626%14–19, 23–28, 34–38, 42–46, 52–56
calendar_backend/models
   base.py64592%37–40, 87
calendar_backend/routes
   base.py74791%75, 80–81, 86–87, 98, 101
calendar_backend/routes/event
   comment.py47687%30, 41–43, 52, 64
   comment_review.py27485%23–29, 41
   event.py1441292%38, 45–48, 53, 113, 117, 205, 212, 218, 224
   user_event.py231343%31–51, 69–80
calendar_backend/routes/group
   group.py38392%26, 42, 58
calendar_backend/routes/lecturer
   comment.py48883%35, 49, 57–61, 70
   comment_review.py25484%21–29, 41
   lecturer.py60887%27, 41, 44, 54, 78–81
   photo.py43588%43, 48, 65, 76, 79
   photo_review.py512061%39–58, 75–77
calendar_backend/routes/models
   base.py60985%36–40, 43, 56, 67, 80
   event.py62395%15, 42, 60
   group.py391659%13–19, 22, 32–38, 41
   lecturer.py46296%21, 31
   room.py21195%13
calendar_backend/routes/room
   room.py39392%26, 44, 58
TOTAL124121283% 

Summary

Tests Skipped Failures Errors Time
34 0 💤 0 ❌ 0 🔥 9.410s ⏱️

@CaseAsLimbo CaseAsLimbo requested a review from petrCher July 12, 2026 10:57
@CaseAsLimbo CaseAsLimbo linked an issue Jul 12, 2026 that may be closed by this pull request
@github-actions

Copy link
Copy Markdown

💩 Code linting failed, use black and isort to fix it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EVENT Patch/event/{id} не меняет "room_id"

1 participant