Правка идущей партии проставляет места, не завершая её (#28) #35

Merged
NotBigGhost merged 2 commits from issue-28-finish-form-sync into dev 2026-09-09 20:03:26 +03:00
Collaborator

Что сделано

Результаты идущей партии больше не записать. Места и причина победы принимаются только для завершённой партии — иначе они оседали в партии со статусом in_progress: она оставалась в «Незавершённых», в статистику не попадала и очков не приносила. Дату и общий комментарий по ходу партии править можно по-прежнему, они двойственного состояния не создают. В админке у идущей партии вместо формы правки — пояснение и переход на страницу партии, чтобы админ не упирался в 409 без объяснения.

Форма завершения стала общей. Раскладка мест, ничьи, выбывшие, комментарии об игроках, причина победы и комментарий о партии сохраняются в общий черновик и разъезжаются участникам по SSE. Второй заполняющий видит правки первого и продолжает с того же места, а не вводит всё заново после чужого «Завершить».

Ключевое решение: черновик живёт в отдельной таблице match_finish_drafts, а не колонками в matches. Запись в строку партии дёрнула бы onupdate у updated_at, а это версия для оптимистичной блокировки — «Завершить» у второго участника начал бы ловить STALE_WRITE на каждую чужую правку черновика. На это есть отдельный тест.

Детали поведения:

  • запись черновика — через ~0.6 с после последнего действия, чтобы не слать запрос на каждое движение тайла;
  • чужой черновик применяется, только если с момента моего последнего действия прошло больше 1.5 с — иначе правка соседа перетирала бы тайл прямо под рукой;
  • перед «Завершить» отложенная запись дожимается: иначе последняя правка ушла бы в результаты, но не в черновик, и второй участник увидел бы не то, что записалось. Само завершение по-прежнему отправляет тело запроса, поэтому работает и если черновик не дошёл;
  • под подсказкой о перетаскивании — строка «Результаты заполняет также <Ник>»; если партию завершил другой участник, появляется тост вместо молча исчезающей формы;
  • черновик удаляется при завершении партии и уходит каскадом при её удалении; в завершённую партию не пишется (409); посторонний из другой группы получает 403.

Для черновика заведён отдельный тип SSE-события match_draft: он меняется на каждое движение тайла, и полная инвалидация (лидерборд, история, профили всей группы) по нему была бы расточительной. Автору правки событие не шлётся.

Коммиты

  • 8be9a23 Партия: общий черновик завершения и запрет результатов до финиша
  • 32d64c9 Партия: совместное заполнение формы завершения на клиенте

Проверки

  • pytest — 87 passed (было 81; 6 новых тестов в tests/test_finish_draft.py)
  • alembic upgrade head на копии dev-базы — миграция 0012 применяется, повторный прогон no-op, каскады CASCADE/SET NULL на месте
  • npm run gen:api + npm run build — схема перегенерирована, сборка зелёная

Отклонения от плана

Одно, в сторону сужения. План запрещал у идущей партии PATCH целиком, но это ломало существующий сценарий: правку общего комментария по ходу партии (её проверял тест test_stale_finish_rejected). Запрет сужен до записи результатов — participants и win_reason; именно они создавали проблему.

Плюс в черновик добавлен overall_comment: без него часть формы осталась бы несинхронизированной.

Closes #28

🤖 Generated with Claude Code

https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf

## Что сделано **Результаты идущей партии больше не записать.** Места и причина победы принимаются только для завершённой партии — иначе они оседали в партии со статусом `in_progress`: она оставалась в «Незавершённых», в статистику не попадала и очков не приносила. Дату и общий комментарий по ходу партии править можно по-прежнему, они двойственного состояния не создают. В админке у идущей партии вместо формы правки — пояснение и переход на страницу партии, чтобы админ не упирался в 409 без объяснения. **Форма завершения стала общей.** Раскладка мест, ничьи, выбывшие, комментарии об игроках, причина победы и комментарий о партии сохраняются в общий черновик и разъезжаются участникам по SSE. Второй заполняющий видит правки первого и продолжает с того же места, а не вводит всё заново после чужого «Завершить». Ключевое решение: черновик живёт в **отдельной таблице** `match_finish_drafts`, а не колонками в `matches`. Запись в строку партии дёрнула бы `onupdate` у `updated_at`, а это версия для оптимистичной блокировки — «Завершить» у второго участника начал бы ловить `STALE_WRITE` на каждую чужую правку черновика. На это есть отдельный тест. Детали поведения: - запись черновика — через ~0.6 с после последнего действия, чтобы не слать запрос на каждое движение тайла; - чужой черновик применяется, только если с момента моего последнего действия прошло больше 1.5 с — иначе правка соседа перетирала бы тайл прямо под рукой; - перед «Завершить» отложенная запись дожимается: иначе последняя правка ушла бы в результаты, но не в черновик, и второй участник увидел бы не то, что записалось. Само завершение по-прежнему отправляет тело запроса, поэтому работает и если черновик не дошёл; - под подсказкой о перетаскивании — строка «Результаты заполняет также &lt;Ник&gt;»; если партию завершил другой участник, появляется тост вместо молча исчезающей формы; - черновик удаляется при завершении партии и уходит каскадом при её удалении; в завершённую партию не пишется (409); посторонний из другой группы получает 403. Для черновика заведён отдельный тип SSE-события `match_draft`: он меняется на каждое движение тайла, и полная инвалидация (лидерборд, история, профили всей группы) по нему была бы расточительной. Автору правки событие не шлётся. ## Коммиты - `8be9a23` Партия: общий черновик завершения и запрет результатов до финиша - `32d64c9` Партия: совместное заполнение формы завершения на клиенте ## Проверки - `pytest` — 87 passed (было 81; 6 новых тестов в `tests/test_finish_draft.py`) - `alembic upgrade head` на копии dev-базы — миграция `0012` применяется, повторный прогон no-op, каскады `CASCADE`/`SET NULL` на месте - `npm run gen:api` + `npm run build` — схема перегенерирована, сборка зелёная ## Отклонения от плана Одно, в сторону сужения. План запрещал у идущей партии `PATCH` целиком, но это ломало существующий сценарий: правку общего комментария по ходу партии (её проверял тест `test_stale_finish_rejected`). Запрет сужен до записи результатов — `participants` и `win_reason`; именно они создавали проблему. Плюс в черновик добавлен `overall_comment`: без него часть формы осталась бы несинхронизированной. Closes #28 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Agent added 2 commits 2026-09-09 19:40:11 +03:00
Результаты (места и причина победы) теперь пишутся только в завершённую партию.
Раньше их можно было проставить идущей: партия оставалась in_progress, висела в
«Незавершённых», в статистику не попадала и очков не приносила — победитель есть,
а игры как бы не было. Дату и общий комментарий по ходу партии править по-прежнему
можно: двойственного состояния они не создают.

Форма завершения получила общий черновик (match_finish_drafts): раскладка мест,
ничьи, выбывшие, комментарии и причина победы видны всем, кто заполняет партию.
Отдельная таблица, а не колонки в matches, намеренно — запись в строку партии
дёргает onupdate у updated_at, то есть версию для оптимистичной блокировки, и
«Завершить» у второго участника ловил бы STALE_WRITE на каждую чужую правку.
Черновик удаляется при завершении и уходит каскадом при удалении партии.

Черновик разъезжается отдельным типом SSE-события: он меняется на каждое движение
тайла, и полная инвалидация (лидерборд, история, профили) по нему была бы
расточительной. Автору правки событие не шлётся.

#28

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Раскладка, комментарии, причина победы и комментарий о партии уходят в общий
черновик через ~0.6с после последнего действия, а чужие правки подтягиваются по
SSE. Чужой черновик применяется, только если с момента моего последнего действия
прошло больше 1.5с — иначе правка соседа перетирала бы тайл прямо под рукой.

Перед «Завершить» отложенная запись дожимается: иначе последняя правка попала бы
в результаты, но не в черновик, и второй участник увидел бы не то, что записалось.
Само завершение по-прежнему шлёт тело запроса, так что работает и без черновика.

Под подсказкой о перетаскивании появилась строка «Результаты заполняет также
<Ник>», а если партию завершил кто-то другой — тост вместо молча исчезающей формы.

В админке у идущей партии вместо формы правки — пояснение и переход на страницу
партии: сервер её результаты всё равно не примет.

#28

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Owner

При попытке создать партию пишет "Ошибка запроса", в меню созданной партии не переходит. При этом в список идущих партий она добавляется. Текст ошибки:
INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in call
await self.simple_response(scope, receive, send, request_headers=headers)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (28,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in call
await self.simple_response(scope, receive, send, request_headers=headers)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (29,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in call
await self.simple_response(scope, receive, send, request_headers=headers)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (30,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)

При попытке перейти к завершению такой партии пишет "партия не найдена", лог следующий:
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (30,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/matches/29 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (29,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/groups/5/members HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/groups/5/factions HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/invitations HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/groups/5 HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/groups/5/stats HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/groups/5/matches?limit=20&offset=0 HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (30,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK
INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such table: match_finish_drafts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\applications.py", line 1162, in call
await super().call(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\applications.py", line 90, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, _send)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 660, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\routing.py", line 680, in app
await route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle
await self.original_router.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle
await included_router._handle_selected(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected
await original_route.handle(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle
await app(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 143, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 53, in wrapped_app
raise exc
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 129, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 683, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 2518, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\anyio_backends_asyncio.py", line 1002, in run
result = context.run(func, *args)
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match
return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user))
File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read
draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type]
File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft
return session.get(MatchFinishDraft, match_id)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get
return self._get_impl(
~~~~~~~~~~~~~~^
entity,
^^^^^^^
...<7 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl
return db_load_fn(
self,
...<5 lines>...
bind_arguments=bind_arguments,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity
session.execute(
~~~~~~~~~~~~~~~^
q,
^^
...<2 lines>...
bind_arguments=bind_arguments,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute
return super().execute(
~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute
return self._execute_internal(
~~~~~~~~~~~~~~~~~~~~~~^
statement,
^^^^^^^^^^
...<4 lines>...
_add_event=_add_event,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self,
^^^^^
...<4 lines>...
conn,
^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
result = conn.execute(
statement, params or {}, execution_options=execution_options
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
dialect,
...<8 lines>...
cache_hit=cache_hit,
)
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\ivan\ForbidenStarsApp\backend.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts
[SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at
FROM match_finish_drafts
WHERE match_finish_drafts.match_id = ?]
[parameters: (30,)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)

При попытке создать партию пишет "Ошибка запроса", в меню созданной партии не переходит. При этом в список идущих партий она добавляется. Текст ошибки: INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (28,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (29,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "POST /api/matches HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 96, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 154, in simple_response await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 139, in start_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (30,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) При попытке перейти к завершению такой партии пишет "партия не найдена", лог следующий: INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (30,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/matches/29 HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (29,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/groups/5/members HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/users/me/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/groups/5/factions HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/notifications HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/invitations HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/groups/5 HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/groups/5/stats HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/groups/5/matches?limit=20&offset=0 HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (30,)] (Background on this error at: https://sqlalche.me/e/20/e3q8) INFO: 94.19.64.245:0 - "GET /api/home HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/users/me HTTP/1.1" 200 OK INFO: 94.19.64.245:0 - "GET /api/matches/30 HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlite3.OperationalError: no such table: match_finish_drafts The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 421, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 62, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\applications.py", line 1162, in __call__ await super().__call__(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\applications.py", line 90, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "C:\Users\ivan\ForbidenStarsApp\backend\app\main.py", line 72, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 88, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 660, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\routing.py", line 680, in app await route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1609, in handle await self.original_router.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 2047, in handle await included_router._handle_selected(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1629, in _handle_selected await original_route.handle(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 1218, in handle await app(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 143, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 129, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 683, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\fastapi\routing.py", line 339, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\starlette\concurrency.py", line 34, in run_in_threadpool return await anyio.to_thread.run_sync(func) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\to_thread.py", line 63, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2518, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1002, in run result = context.run(func, *args) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 196, in get_match return build_match_read(session, match, can_modify=match_service.can_modify(session, match, user)) File "C:\Users\ivan\ForbidenStarsApp\backend\app\routers\matches.py", line 63, in build_match_read draft_row = match_service.get_finish_draft(session, match.id) # type: ignore[arg-type] File "C:\Users\ivan\ForbidenStarsApp\backend\app\services\match_service.py", line 300, in get_finish_draft return session.get(MatchFinishDraft, match_id) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3701, in get return self._get_impl( ~~~~~~~~~~~~~~^ entity, ^^^^^^^ ...<7 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3880, in _get_impl return db_load_fn( self, ...<5 lines>... bind_arguments=bind_arguments, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 695, in load_on_pk_identity session.execute( ~~~~~~~~~~~~~~~^ q, ^^ ...<2 lines>... bind_arguments=bind_arguments, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlmodel\orm\session.py", line 136, in execute return super().execute( ~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2372, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2270, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1421, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\ivan\ForbidenStarsApp\backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: match_finish_drafts [SQL: SELECT match_finish_drafts.match_id AS match_finish_drafts_match_id, match_finish_drafts.data AS match_finish_drafts_data, match_finish_drafts.updated_by AS match_finish_drafts_updated_by, match_finish_drafts.updated_at AS match_finish_drafts_updated_at FROM match_finish_drafts WHERE match_finish_drafts.match_id = ?] [parameters: (30,)] (Background on this error at: https://sqlalche.me/e/20/e3q8)
Author
Collaborator

Разобрался: код в этом PR ни при чём, ошибка окружения. В вашей dev-базе не была применена миграция 0012_match_finish_draft — я проверял её только на копии базы во временной папке, а рабочую не мигрировал. build_match_read читает черновик, поэтому падало любое обращение к партии, включая создание.

Применил alembic upgrade head к backend/data/dev/forbidden_stars.db: версия 0011 → 0012, таблица создана, все 28 партий на месте. Проверил на самой базе — партия #30 из трейсбека читается, черновик возвращается как null. Сервер с --reload подхватит без действий с вашей стороны.

Чтобы это не повторялось с каждой следующей миграцией, завёл #36 и сделал: dev-лаунчер теперь сам накатывает миграции перед стартом — #37

Разобрался: код в этом PR ни при чём, ошибка окружения. В вашей dev-базе не была применена миграция `0012_match_finish_draft` — я проверял её только на копии базы во временной папке, а рабочую не мигрировал. `build_match_read` читает черновик, поэтому падало любое обращение к партии, включая создание. Применил `alembic upgrade head` к `backend/data/dev/forbidden_stars.db`: версия `0011` → `0012`, таблица создана, все 28 партий на месте. Проверил на самой базе — партия #30 из трейсбека читается, черновик возвращается как `null`. Сервер с `--reload` подхватит без действий с вашей стороны. Чтобы это не повторялось с каждой следующей миграцией, завёл #36 и сделал: dev-лаунчер теперь сам накатывает миграции перед стартом — https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/37
NotBigGhost merged commit d41391eb69 into dev 2026-09-09 20:03:26 +03:00
Sign in to join this conversation.