Результаты идущей партии больше не записать. Места и причина победы принимаются только для завершённой партии — иначе они оседали в партии со статусом 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: без него часть формы осталась бы несинхронизированной.
## Что сделано
**Результаты идущей партии больше не записать.** Места и причина победы принимаются только для завершённой партии — иначе они оседали в партии со статусом `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.com/claude-code)
https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Результаты (места и причина победы) теперь пишутся только в завершённую партию.
Раньше их можно было проставить идущей: партия оставалась 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
При попытке создать партию пишет "Ошибка запроса", в меню созданной партии не переходит. При этом в список идущих партий она добавляется. Текст ошибки:
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)
Разобрался: код в этом 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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что сделано
Результаты идущей партии больше не записать. Места и причина победы принимаются только для завершённой партии — иначе они оседали в партии со статусом
in_progress: она оставалась в «Незавершённых», в статистику не попадала и очков не приносила. Дату и общий комментарий по ходу партии править можно по-прежнему, они двойственного состояния не создают. В админке у идущей партии вместо формы правки — пояснение и переход на страницу партии, чтобы админ не упирался в 409 без объяснения.Форма завершения стала общей. Раскладка мест, ничьи, выбывшие, комментарии об игроках, причина победы и комментарий о партии сохраняются в общий черновик и разъезжаются участникам по SSE. Второй заполняющий видит правки первого и продолжает с того же места, а не вводит всё заново после чужого «Завершить».
Ключевое решение: черновик живёт в отдельной таблице
match_finish_drafts, а не колонками вmatches. Запись в строку партии дёрнула быonupdateуupdated_at, а это версия для оптимистичной блокировки — «Завершить» у второго участника начал бы ловитьSTALE_WRITEна каждую чужую правку черновика. На это есть отдельный тест.Детали поведения:
Для черновика заведён отдельный тип 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
При попытке создать партию пишет "Ошибка запроса", в меню созданной партии не переходит. При этом в список идущих партий она добавляется. Текст ошибки:
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)
Разобрался: код в этом 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