From 4bbe086cec4bef414f3e6766fef0b80677b9a3d3 Mon Sep 17 00:00:00 2001 From: FDKost Date: Thu, 18 Dec 2025 17:07:33 +0300 Subject: [PATCH] =?UTF-8?q?Refactored:=20-=20=D0=BF=D0=BE=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=88=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9;=20-=20=D0=BF=D0=BE=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=20READ?= =?UTF-8?q?ME.md,=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=80=D0=BE=D0=B1=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0;=20-=20=D0=BF=D0=BE=D1=87=D0=B8?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=20.env=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0.=20Checked:=20-=20docker-compose?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82;=20-=20auth?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82;=20-=20?= =?UTF-8?q?=D1=87=D0=B0=D1=82=20=D1=81=20=D0=BD=D0=B5=D0=B9=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D0=B5=D1=82=D1=8C=D1=8E=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82,=20=D0=BD=D0=BE=20=D0=BA=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20400=20=D0=B8=D0=B7=20=D0=B7=D0=B0=20NEWPLANET-AI?= =?UTF-8?q?-AGENTS,=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B8=D1=82=D1=8C=20=D0=BF=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alembic/versions/001_initial_migration.py | 121 ++ new-planet-backend/logs/app.log | 1343 +++++++++++++++++ 2 files changed, 1464 insertions(+) create mode 100644 new-planet-backend/alembic/versions/001_initial_migration.py create mode 100644 new-planet-backend/logs/app.log diff --git a/new-planet-backend/alembic/versions/001_initial_migration.py b/new-planet-backend/alembic/versions/001_initial_migration.py new file mode 100644 index 0000000..c3f8723 --- /dev/null +++ b/new-planet-backend/alembic/versions/001_initial_migration.py @@ -0,0 +1,121 @@ +"""Initial migration + +Revision ID: 001_initial +Revises: +Create Date: 2024-01-01 00:00:00.000000 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '001_initial' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # Create users table (enum will be created automatically by SQLAlchemy) + op.create_table( + 'users', + sa.Column('id', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('email', sa.String(length=255), nullable=False), + sa.Column('hashed_password', sa.String(length=255), nullable=False), + sa.Column('role', postgresql.ENUM('CHILD', 'PARENT', 'EDUCATOR', name='userrole'), nullable=False), + sa.Column('full_name', sa.String(length=255), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_index('ix_users_email', 'users', ['email'], unique=True) + + # Create schedules table + op.create_table( + 'schedules', + sa.Column('id', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('user_id', sa.String(), nullable=False), + sa.Column('title', sa.String(length=255), nullable=False), + sa.Column('date', sa.Date(), nullable=False), + sa.Column('description', sa.String(length=1000), nullable=True), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_index('ix_schedules_user_id', 'schedules', ['user_id']) + op.create_index('ix_schedules_date', 'schedules', ['date']) + + # Create tasks table + op.create_table( + 'tasks', + sa.Column('id', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('schedule_id', sa.String(), nullable=False), + sa.Column('title', sa.String(length=255), nullable=False), + sa.Column('description', sa.Text(), nullable=True), + sa.Column('image_url', sa.String(length=500), nullable=True), + sa.Column('duration_minutes', sa.Integer(), nullable=False, server_default='30'), + sa.Column('completed', sa.Boolean(), nullable=False, server_default='false'), + sa.Column('order', sa.Integer(), nullable=False, server_default='0'), + sa.Column('category', sa.String(length=100), nullable=True), + sa.ForeignKeyConstraint(['schedule_id'], ['schedules.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_index('ix_tasks_schedule_id', 'tasks', ['schedule_id']) + + # Create rewards table + op.create_table( + 'rewards', + sa.Column('id', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('user_id', sa.String(), nullable=False), + sa.Column('title', sa.String(length=255), nullable=False), + sa.Column('description', sa.Text(), nullable=True), + sa.Column('image_url', sa.String(length=500), nullable=True), + sa.Column('points_required', sa.Integer(), nullable=False, server_default='1'), + sa.Column('is_claimed', sa.Boolean(), nullable=False, server_default='false'), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_index('ix_rewards_user_id', 'rewards', ['user_id']) + + # Create ai_conversations table + op.create_table( + 'ai_conversations', + sa.Column('id', sa.String(), nullable=False), + sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), + sa.Column('user_id', sa.String(), nullable=False), + sa.Column('conversation_id', sa.String(), nullable=False), + sa.Column('message', sa.Text(), nullable=False), + sa.Column('response', sa.Text(), nullable=False), + sa.Column('tokens_used', sa.Integer(), nullable=True), + sa.Column('model', sa.String(length=100), nullable=True), + sa.Column('context', postgresql.JSON(astext_type=sa.Text()), nullable=True), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('conversation_id') + ) + op.create_index('ix_ai_conversations_user_id', 'ai_conversations', ['user_id']) + op.create_index('ix_ai_conversations_conversation_id', 'ai_conversations', ['conversation_id']) + + +def downgrade() -> None: + op.drop_index('ix_ai_conversations_conversation_id', table_name='ai_conversations') + op.drop_index('ix_ai_conversations_user_id', table_name='ai_conversations') + op.drop_table('ai_conversations') + op.drop_index('ix_rewards_user_id', table_name='rewards') + op.drop_table('rewards') + op.drop_index('ix_tasks_schedule_id', table_name='tasks') + op.drop_table('tasks') + op.drop_index('ix_schedules_date', table_name='schedules') + op.drop_index('ix_schedules_user_id', table_name='schedules') + op.drop_table('schedules') + op.drop_index('ix_users_email', table_name='users') + op.drop_table('users') + op.execute("DROP TYPE userrole") + diff --git a/new-planet-backend/logs/app.log b/new-planet-backend/logs/app.log new file mode 100644 index 0000000..d1f111d --- /dev/null +++ b/new-planet-backend/logs/app.log @@ -0,0 +1,1343 @@ +2025-12-18 12:58:53 - root - INFO - Starting up... +2025-12-18 12:58:56 - root - INFO - Starting up... +2025-12-18 12:59:01 - root - INFO - Starting up... +2025-12-18 13:00:55 - app.middleware.error_handler - ERROR - Unhandled exception: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : relation "users" does not exist +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.email = $1::VARCHAR] +[parameters: ('user@example.com',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 526, in _prepare_and_execute + prepared_stmt, attributes = await adapt_connection._prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, self._invalidate_schema_cache_asof + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 773, in _prepare + prepared_stmt = await self._connection.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, name=self._prepared_statement_name_func() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 638, in prepare + return await self._prepare( + ^^^^^^^^^^^^^^^^^^^^ + ...<4 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 657, in _prepare + stmt = await self._get_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 443, in _get_statement + statement = await self._protocol.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "asyncpg/protocol/protocol.pyx", line 165, in prepare +asyncpg.exceptions.UndefinedTableError: relation "users" does not exist + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: : relation "users" does not exist + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ + await self.app(scope, receive, _send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 191, in __call__ + with recv_stream, send_stream, collapse_excgroups(): + ~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 162, in __exit__ + self.gen.throw(value) + ~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 193, in __call__ + response = await self.dispatch_func(request, call_next) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\middleware\rate_limiter.py", line 33, in dispatch + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 168, in call_next + raise app_exc from app_exc.__cause__ or app_exc.__context__ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ + await self.simple_response(scope, receive, send, request_headers=headers) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__ + await self.middleware_stack(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 736, in app + await route.handle(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 118, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 104, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 428, in app + raw_response = await run_endpoint_function( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<3 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 314, in run_endpoint_function + return await dependant.call(**values) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\api\v1\auth.py", line 20, in register + user = await auth_service.register(db, user_in) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\services\auth_service.py", line 45, in register + existing_user = await crud_user.get_by_email(db, user_in.email) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\crud\user.py", line 12, in get_by_email + result = await db.execute(select(User).where(User.email == email)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 449, in execute + result = await greenlet_spawn( + ^^^^^^^^^^^^^^^^^^^^^ + ...<6 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn + result = context.throw(*sys.exc_info()) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2351, in execute + return self._execute_internal( + ~~~~~~~~~~~~~~~~~~~~~~^ + statement, + ^^^^^^^^^^ + ...<4 lines>... + _add_event=_add_event, + ^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2249, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<4 lines>... + conn, + ^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute + return meth( + self, + distilled_parameters, + execution_options or NO_OPTIONS, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 527, in _execute_on_connection + return connection._execute_clauseelement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, distilled_params, execution_options + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement + ret = self._execute_context( + dialect, + ...<8 lines>... + cache_hit=cache_hit, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ~~~~~~~~~~~~~~~~~~~~~~~~~^ + dialect, context, statement, parameters + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + e, str_statement, effective_parameters, cursor, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2363, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : relation "users" does not exist +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.email = $1::VARCHAR] +[parameters: ('user@example.com',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +2025-12-18 13:03:24 - app.middleware.error_handler - ERROR - Unhandled exception: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : relation "users" does not exist +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.email = $1::VARCHAR] +[parameters: ('test-user@example.com',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 526, in _prepare_and_execute + prepared_stmt, attributes = await adapt_connection._prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, self._invalidate_schema_cache_asof + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 773, in _prepare + prepared_stmt = await self._connection.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, name=self._prepared_statement_name_func() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 638, in prepare + return await self._prepare( + ^^^^^^^^^^^^^^^^^^^^ + ...<4 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 657, in _prepare + stmt = await self._get_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 443, in _get_statement + statement = await self._protocol.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "asyncpg/protocol/protocol.pyx", line 165, in prepare +asyncpg.exceptions.UndefinedTableError: relation "users" does not exist + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: : relation "users" does not exist + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ + await self.app(scope, receive, _send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 191, in __call__ + with recv_stream, send_stream, collapse_excgroups(): + ~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 162, in __exit__ + self.gen.throw(value) + ~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 193, in __call__ + response = await self.dispatch_func(request, call_next) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\middleware\rate_limiter.py", line 33, in dispatch + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 168, in call_next + raise app_exc from app_exc.__cause__ or app_exc.__context__ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ + await self.simple_response(scope, receive, send, request_headers=headers) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__ + await self.middleware_stack(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 736, in app + await route.handle(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 118, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 104, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 428, in app + raw_response = await run_endpoint_function( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<3 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 314, in run_endpoint_function + return await dependant.call(**values) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\api\v1\auth.py", line 20, in register + user = await auth_service.register(db, user_in) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\services\auth_service.py", line 45, in register + existing_user = await crud_user.get_by_email(db, user_in.email) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\crud\user.py", line 12, in get_by_email + result = await db.execute(select(User).where(User.email == email)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 449, in execute + result = await greenlet_spawn( + ^^^^^^^^^^^^^^^^^^^^^ + ...<6 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn + result = context.throw(*sys.exc_info()) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2351, in execute + return self._execute_internal( + ~~~~~~~~~~~~~~~~~~~~~~^ + statement, + ^^^^^^^^^^ + ...<4 lines>... + _add_event=_add_event, + ^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2249, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<4 lines>... + conn, + ^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute + return meth( + self, + distilled_parameters, + execution_options or NO_OPTIONS, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 527, in _execute_on_connection + return connection._execute_clauseelement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, distilled_params, execution_options + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement + ret = self._execute_context( + dialect, + ...<8 lines>... + cache_hit=cache_hit, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ~~~~~~~~~~~~~~~~~~~~~~~~~^ + dialect, context, statement, parameters + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + e, str_statement, effective_parameters, cursor, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2363, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : relation "users" does not exist +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.email = $1::VARCHAR] +[parameters: ('test-user@example.com',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +2025-12-18 13:04:36 - root - INFO - Shutting down... +2025-12-18 13:04:39 - root - INFO - Starting up... +2025-12-18 13:04:42 - root - INFO - Starting up... +2025-12-18 13:04:42 - root - INFO - Shutting down... +2025-12-18 13:04:48 - root - INFO - Shutting down... +2025-12-18 13:04:51 - root - INFO - Starting up... +2025-12-18 13:04:54 - root - INFO - Starting up... +2025-12-18 13:09:52 - root - INFO - Shutting down... +2025-12-18 13:09:56 - root - INFO - Starting up... +2025-12-18 13:11:01 - root - INFO - Starting up... +2025-12-18 13:11:11 - root - INFO - Shutting down... +2025-12-18 13:11:13 - root - INFO - Starting up... +2025-12-18 13:11:26 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:11:56 - root - INFO - Shutting down... +2025-12-18 13:12:01 - root - INFO - Starting up... +2025-12-18 13:12:14 - root - INFO - Starting up... +2025-12-18 13:12:41 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:13:10 - root - INFO - Shutting down... +2025-12-18 13:13:13 - root - INFO - Starting up... +2025-12-18 13:13:20 - root - INFO - Shutting down... +2025-12-18 13:13:22 - root - INFO - Starting up... +2025-12-18 13:13:29 - root - INFO - Shutting down... +2025-12-18 13:13:32 - root - INFO - Starting up... +2025-12-18 13:13:35 - root - INFO - Shutting down... +2025-12-18 13:13:38 - root - INFO - Starting up... +2025-12-18 13:15:48 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:16:12 - root - INFO - Shutting down... +2025-12-18 13:16:15 - root - INFO - Starting up... +2025-12-18 13:16:17 - root - INFO - Starting up... +2025-12-18 13:16:22 - root - INFO - Shutting down... +2025-12-18 13:16:25 - root - INFO - Starting up... +2025-12-18 13:16:35 - root - INFO - Shutting down... +2025-12-18 13:16:38 - root - INFO - Starting up... +2025-12-18 13:16:59 - root - INFO - Shutting down... +2025-12-18 13:17:03 - root - INFO - Starting up... +2025-12-18 13:17:10 - root - INFO - Shutting down... +2025-12-18 13:17:13 - root - INFO - Starting up... +2025-12-18 13:21:15 - root - INFO - Shutting down... +2025-12-18 13:21:18 - root - INFO - Starting up... +2025-12-18 13:21:21 - root - INFO - Starting up... +2025-12-18 13:26:01 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:26:01 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\core\security.py", line 38, in get_password_hash + return pwd_context.hash(password) + ~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\context.py", line 2258, in hash + return record.hash(secret, **kwds) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 779, in hash + self.checksum = self._calc_checksum(secret) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 591, in _calc_checksum + self._stub_requires_backend() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2254, in _stub_requires_backend + cls.set_backend() + ~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2156, in set_backend + return owner.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2163, in set_backend + return cls.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2188, in set_backend + cls._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2311, in _set_backend + super(SubclassBackendMixin, cls)._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2224, in _set_backend + ok = loader(**kwds) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 626, in _load_backend_mixin + return mixin_cls._finalize_backend_mixin(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 421, in _finalize_backend_mixin + if detect_wrap_bug(IDENT_2A): + ~~~~~~~~~~~~~~~^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 380, in detect_wrap_bug + if verify(secret, bug_hash): + ~~~~~~^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 792, in verify + return consteq(self._calc_checksum(secret), chk) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 655, in _calc_checksum + hash = _bcrypt.hashpw(secret, config) +ValueError: password cannot be longer than 72 bytes, truncate manually if necessary (e.g. my_password[:72]) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:26:31 - root - INFO - Shutting down... +2025-12-18 13:26:35 - root - INFO - Starting up... +2025-12-18 13:26:38 - root - INFO - Shutting down... +2025-12-18 13:26:41 - root - INFO - Starting up... +2025-12-18 13:26:56 - root - INFO - Shutting down... +2025-12-18 13:26:59 - root - INFO - Starting up... +2025-12-18 13:27:05 - root - INFO - Shutting down... +2025-12-18 13:27:08 - root - INFO - Starting up... +2025-12-18 13:27:17 - root - INFO - Shutting down... +2025-12-18 13:27:19 - root - INFO - Starting up... +2025-12-18 13:27:44 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:27:44 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\core\security.py", line 38, in get_password_hash + # Обрезаем до 72 байт + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\context.py", line 2258, in hash + return record.hash(secret, **kwds) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 779, in hash + self.checksum = self._calc_checksum(secret) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 591, in _calc_checksum + self._stub_requires_backend() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2254, in _stub_requires_backend + cls.set_backend() + ~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2156, in set_backend + return owner.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2163, in set_backend + return cls.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2188, in set_backend + cls._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2311, in _set_backend + super(SubclassBackendMixin, cls)._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2224, in _set_backend + ok = loader(**kwds) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 626, in _load_backend_mixin + return mixin_cls._finalize_backend_mixin(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 421, in _finalize_backend_mixin + if detect_wrap_bug(IDENT_2A): + ~~~~~~~~~~~~~~~^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 380, in detect_wrap_bug + if verify(secret, bug_hash): + ~~~~~~^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 792, in verify + return consteq(self._calc_checksum(secret), chk) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 655, in _calc_checksum + hash = _bcrypt.hashpw(secret, config) +ValueError: password cannot be longer than 72 bytes, truncate manually if necessary (e.g. my_password[:72]) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:29:06 - root - INFO - Shutting down... +2025-12-18 13:29:09 - root - INFO - Starting up... +2025-12-18 13:29:14 - root - INFO - Shutting down... +2025-12-18 13:29:18 - root - INFO - Starting up... +2025-12-18 13:29:22 - root - INFO - Starting up... +2025-12-18 13:29:23 - root - INFO - Shutting down... +2025-12-18 13:29:26 - root - INFO - Starting up... +2025-12-18 13:30:36 - root - INFO - Shutting down... +2025-12-18 13:30:43 - root - INFO - Starting up... +2025-12-18 13:31:05 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:31:05 - passlib.handlers.bcrypt - WARNING - (trapped) error reading bcrypt version +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\core\security.py", line 38, in get_password_hash + def get_password_hash(password: str) -> str: + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\context.py", line 2258, in hash + return record.hash(secret, **kwds) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 779, in hash + self.checksum = self._calc_checksum(secret) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 591, in _calc_checksum + self._stub_requires_backend() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2254, in _stub_requires_backend + cls.set_backend() + ~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2156, in set_backend + return owner.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2163, in set_backend + return cls.set_backend(name, dryrun=dryrun) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2188, in set_backend + cls._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2311, in _set_backend + super(SubclassBackendMixin, cls)._set_backend(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 2224, in _set_backend + ok = loader(**kwds) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 626, in _load_backend_mixin + return mixin_cls._finalize_backend_mixin(name, dryrun) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 421, in _finalize_backend_mixin + if detect_wrap_bug(IDENT_2A): + ~~~~~~~~~~~~~~~^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 380, in detect_wrap_bug + if verify(secret, bug_hash): + ~~~~~~^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\utils\handlers.py", line 792, in verify + return consteq(self._calc_checksum(secret), chk) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 655, in _calc_checksum + hash = _bcrypt.hashpw(secret, config) +ValueError: password cannot be longer than 72 bytes, truncate manually if necessary (e.g. my_password[:72]) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\passlib\handlers\bcrypt.py", line 620, in _load_backend_mixin + version = _bcrypt.__about__.__version__ + ^^^^^^^^^^^^^^^^^ +AttributeError: module 'bcrypt' has no attribute '__about__' +2025-12-18 13:31:19 - root - INFO - Shutting down... +2025-12-18 13:31:22 - root - INFO - Starting up... +2025-12-18 13:31:24 - root - INFO - Starting up... +2025-12-18 13:33:16 - root - INFO - Shutting down... +2025-12-18 13:33:19 - root - INFO - Starting up... +2025-12-18 13:33:22 - root - INFO - Starting up... +2025-12-18 13:33:24 - root - INFO - Starting up... +2025-12-18 13:33:28 - root - INFO - Shutting down... +2025-12-18 13:33:35 - root - INFO - Starting up... +2025-12-18 13:33:45 - root - INFO - Shutting down... +2025-12-18 13:33:48 - root - INFO - Starting up... +2025-12-18 13:33:50 - root - INFO - Starting up... +2025-12-18 13:34:07 - app.middleware.error_handler - ERROR - Unhandled exception: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.id = $1::UUID] +[parameters: ('adae0851-85c1-431e-8e09-f8f7ebcbb50c',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 526, in _prepare_and_execute + prepared_stmt, attributes = await adapt_connection._prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, self._invalidate_schema_cache_asof + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 773, in _prepare + prepared_stmt = await self._connection.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, name=self._prepared_statement_name_func() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 638, in prepare + return await self._prepare( + ^^^^^^^^^^^^^^^^^^^^ + ...<4 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 657, in _prepare + stmt = await self._get_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 443, in _get_statement + statement = await self._protocol.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "asyncpg/protocol/protocol.pyx", line 165, in prepare +asyncpg.exceptions.UndefinedFunctionError: operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ + await self.app(scope, receive, _send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 191, in __call__ + with recv_stream, send_stream, collapse_excgroups(): + ~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 162, in __exit__ + self.gen.throw(value) + ~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 193, in __call__ + response = await self.dispatch_func(request, call_next) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\middleware\rate_limiter.py", line 33, in dispatch + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 168, in call_next + raise app_exc from app_exc.__cause__ or app_exc.__context__ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ + await self.simple_response(scope, receive, send, request_headers=headers) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__ + await self.middleware_stack(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 736, in app + await route.handle(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 118, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 104, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 428, in app + raw_response = await run_endpoint_function( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<3 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 314, in run_endpoint_function + return await dependant.call(**values) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\api\v1\auth.py", line 20, in register + user = await auth_service.register(db, user_in) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\services\auth_service.py", line 52, in register + db_user = await crud_user.create(db, user_in, hashed_password) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\crud\user.py", line 25, in create + await db.refresh(db_obj) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 329, in refresh + await greenlet_spawn( + ...<4 lines>... + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn + result = context.throw(*sys.exc_info()) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3154, in refresh + loading.load_on_ident( + ~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<10 lines>... + is_user_refresh=True, + ^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 510, in load_on_ident + return load_on_pk_identity( + session, + ...<11 lines>... + is_user_refresh=is_user_refresh, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2351, in execute + return self._execute_internal( + ~~~~~~~~~~~~~~~~~~~~~~^ + statement, + ^^^^^^^^^^ + ...<4 lines>... + _add_event=_add_event, + ^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2249, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<4 lines>... + conn, + ^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute + return meth( + self, + distilled_parameters, + execution_options or NO_OPTIONS, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 527, in _execute_on_connection + return connection._execute_clauseelement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, distilled_params, execution_options + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement + ret = self._execute_context( + dialect, + ...<8 lines>... + cache_hit=cache_hit, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ~~~~~~~~~~~~~~~~~~~~~~~~~^ + dialect, context, statement, parameters + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + e, str_statement, effective_parameters, cursor, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2363, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.id = $1::UUID] +[parameters: ('adae0851-85c1-431e-8e09-f8f7ebcbb50c',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +2025-12-18 13:34:56 - root - INFO - Shutting down... +2025-12-18 13:34:59 - root - INFO - Starting up... +2025-12-18 13:35:05 - root - INFO - Shutting down... +2025-12-18 13:35:08 - root - INFO - Starting up... +2025-12-18 13:35:09 - root - INFO - Shutting down... +2025-12-18 13:35:16 - root - INFO - Starting up... +2025-12-18 13:36:03 - app.middleware.error_handler - ERROR - Unhandled exception: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.id = $1::UUID] +[parameters: ('48890596-1070-4969-af32-74644b69346a',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 526, in _prepare_and_execute + prepared_stmt, attributes = await adapt_connection._prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, self._invalidate_schema_cache_asof + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 773, in _prepare + prepared_stmt = await self._connection.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + operation, name=self._prepared_statement_name_func() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 638, in prepare + return await self._prepare( + ^^^^^^^^^^^^^^^^^^^^ + ...<4 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 657, in _prepare + stmt = await self._get_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\asyncpg\connection.py", line 443, in _get_statement + statement = await self._protocol.prepare( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<5 lines>... + ) + ^ + File "asyncpg/protocol/protocol.pyx", line 165, in prepare +asyncpg.exceptions.UndefinedFunctionError: operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.ProgrammingError: : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ + await self.app(scope, receive, _send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 191, in __call__ + with recv_stream, send_stream, collapse_excgroups(): + ~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\yfili\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 162, in __exit__ + self.gen.throw(value) + ~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 193, in __call__ + response = await self.dispatch_func(request, call_next) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\middleware\rate_limiter.py", line 33, in dispatch + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 168, in call_next + raise app_exc from app_exc.__cause__ or app_exc.__context__ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ + await self.simple_response(scope, receive, send, request_headers=headers) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__ + await self.middleware_stack(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 736, in app + await route.handle(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle + await self.app(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 118, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 104, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 428, in app + raw_response = await run_endpoint_function( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ...<3 lines>... + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\fastapi\routing.py", line 314, in run_endpoint_function + return await dependant.call(**values) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\api\v1\auth.py", line 20, in register + user = await auth_service.register(db, user_in) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\services\auth_service.py", line 52, in register + db_user = await crud_user.create(db, user_in, hashed_password) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\app\crud\user.py", line 25, in create + await db.refresh(db_obj) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 329, in refresh + await greenlet_spawn( + ...<4 lines>... + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn + result = context.throw(*sys.exc_info()) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 3154, in refresh + loading.load_on_ident( + ~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<10 lines>... + is_user_refresh=True, + ^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\loading.py", line 510, in load_on_ident + return load_on_pk_identity( + session, + ...<11 lines>... + is_user_refresh=is_user_refresh, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2351, in execute + return self._execute_internal( + ~~~~~~~~~~~~~~~~~~~~~~^ + statement, + ^^^^^^^^^^ + ...<4 lines>... + _add_event=_add_event, + ^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2249, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, + ^^^^^ + ...<4 lines>... + conn, + ^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-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\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute + return meth( + self, + distilled_parameters, + execution_options or NO_OPTIONS, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 527, in _execute_on_connection + return connection._execute_clauseelement( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self, distilled_params, execution_options + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement + ret = self._execute_context( + dialect, + ...<8 lines>... + cache_hit=cache_hit, + ) + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ~~~~~~~~~~~~~~~~~~~~~~~~~^ + dialect, context, statement, parameters + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + e, str_statement, effective_parameters, cursor, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2363, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + ~~~~~~~~~~~~~~~~~~~~~~~^ + cursor, str_statement, effective_parameters, context + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute + cursor.execute(statement, parameters) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute + self._adapt_connection.await_( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + self._prepare_and_execute(operation, parameters) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only + return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn + value = await result + ^^^^^^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 563, in _prepare_and_execute + self._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 513, in _handle_exception + self._adapt_connection._handle_exception(error) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ + File "C:\Users\yfili\Desktop\Planet\New-planet-api\new-planet-backend\.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception + raise translated_error from error +sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) : operator does not exist: character varying = uuid +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. +[SQL: SELECT users.email, users.hashed_password, users.role, users.full_name, users.id, users.created_at, users.updated_at +FROM users +WHERE users.id = $1::UUID] +[parameters: ('48890596-1070-4969-af32-74644b69346a',)] +(Background on this error at: https://sqlalche.me/e/20/f405) +2025-12-18 13:38:35 - root - INFO - Shutting down... +2025-12-18 13:38:46 - root - INFO - Starting up... +2025-12-18 13:38:48 - root - INFO - Shutting down... +2025-12-18 13:38:52 - root - INFO - Starting up... +2025-12-18 13:48:03 - root - INFO - Shutting down... +2025-12-18 13:48:08 - root - INFO - Starting up... +2025-12-18 13:48:11 - root - INFO - Starting up... +2025-12-18 13:48:16 - root - INFO - Shutting down... +2025-12-18 13:48:19 - root - INFO - Starting up... +2025-12-18 13:48:49 - root - INFO - Shutting down... +2025-12-18 13:48:52 - root - INFO - Starting up... +2025-12-18 13:48:55 - root - INFO - Starting up... +2025-12-18 13:49:33 - root - INFO - Shutting down... +2025-12-18 13:49:38 - root - INFO - Starting up... +2025-12-18 13:51:42 - root - INFO - Shutting down... -- 2.49.1