diff --git a/backend/app/alembic/env.py b/backend/app/alembic/env.py index b400d56..41eb3ea 100755 --- a/backend/app/alembic/env.py +++ b/backend/app/alembic/env.py @@ -19,7 +19,7 @@ fileConfig(config.config_file_name) # target_metadata = None from app.models.base import BaseSQLModel # noqa -from app.core.config import settings # noqa +from app.core.config import settings # noqa target_metadata = BaseSQLModel.metadata diff --git a/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py b/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py index 10e47a1..61a8018 100644 --- a/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +++ b/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py @@ -5,33 +5,32 @@ Revises: d98dd8ec85a3 Create Date: 2024-07-31 22:24:34.447891 """ + from alembic import op import sqlalchemy as sa import sqlmodel.sql.sqltypes # revision identifiers, used by Alembic. -revision = '1a31ce608336' -down_revision = 'd98dd8ec85a3' +revision = "1a31ce608336" +down_revision = "d98dd8ec85a3" branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('item', 'owner_id', - existing_type=sa.UUID(), - nullable=False) - op.drop_constraint('item_owner_id_fkey', 'item', type_='foreignkey') - op.create_foreign_key(None, 'item', 'user', ['owner_id'], ['id'], ondelete='CASCADE') + op.alter_column("item", "owner_id", existing_type=sa.UUID(), nullable=False) + op.drop_constraint("item_owner_id_fkey", "item", type_="foreignkey") + op.create_foreign_key( + None, "item", "user", ["owner_id"], ["id"], ondelete="CASCADE" + ) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'item', type_='foreignkey') - op.create_foreign_key('item_owner_id_fkey', 'item', 'user', ['owner_id'], ['id']) - op.alter_column('item', 'owner_id', - existing_type=sa.UUID(), - nullable=True) + op.drop_constraint(None, "item", type_="foreignkey") + op.create_foreign_key("item_owner_id_fkey", "item", "user", ["owner_id"], ["id"]) + op.alter_column("item", "owner_id", existing_type=sa.UUID(), nullable=True) # ### end Alembic commands ### diff --git a/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py b/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py index 78a4177..f64ca88 100755 --- a/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +++ b/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py @@ -5,65 +5,90 @@ Revises: e2412789c190 Create Date: 2024-06-17 14:42:44.639457 """ + from alembic import op import sqlalchemy as sa import sqlmodel.sql.sqltypes # revision identifiers, used by Alembic. -revision = '9c0a54914c78' -down_revision = 'e2412789c190' +revision = "9c0a54914c78" +down_revision = "e2412789c190" branch_labels = None depends_on = None def upgrade(): # Adjust the length of the email field in the User table - op.alter_column('user', 'email', - existing_type=sa.String(), - type_=sa.String(length=255), - existing_nullable=False) + op.alter_column( + "user", + "email", + existing_type=sa.String(), + type_=sa.String(length=255), + existing_nullable=False, + ) # Adjust the length of the full_name field in the User table - op.alter_column('user', 'full_name', - existing_type=sa.String(), - type_=sa.String(length=255), - existing_nullable=True) + op.alter_column( + "user", + "full_name", + existing_type=sa.String(), + type_=sa.String(length=255), + existing_nullable=True, + ) # Adjust the length of the title field in the Item table - op.alter_column('item', 'title', - existing_type=sa.String(), - type_=sa.String(length=255), - existing_nullable=False) + op.alter_column( + "item", + "title", + existing_type=sa.String(), + type_=sa.String(length=255), + existing_nullable=False, + ) # Adjust the length of the description field in the Item table - op.alter_column('item', 'description', - existing_type=sa.String(), - type_=sa.String(length=255), - existing_nullable=True) + op.alter_column( + "item", + "description", + existing_type=sa.String(), + type_=sa.String(length=255), + existing_nullable=True, + ) def downgrade(): # Revert the length of the email field in the User table - op.alter_column('user', 'email', - existing_type=sa.String(length=255), - type_=sa.String(), - existing_nullable=False) + op.alter_column( + "user", + "email", + existing_type=sa.String(length=255), + type_=sa.String(), + existing_nullable=False, + ) # Revert the length of the full_name field in the User table - op.alter_column('user', 'full_name', - existing_type=sa.String(length=255), - type_=sa.String(), - existing_nullable=True) + op.alter_column( + "user", + "full_name", + existing_type=sa.String(length=255), + type_=sa.String(), + existing_nullable=True, + ) # Revert the length of the title field in the Item table - op.alter_column('item', 'title', - existing_type=sa.String(length=255), - type_=sa.String(), - existing_nullable=False) + op.alter_column( + "item", + "title", + existing_type=sa.String(length=255), + type_=sa.String(), + existing_nullable=False, + ) # Revert the length of the description field in the Item table - op.alter_column('item', 'description', - existing_type=sa.String(length=255), - type_=sa.String(), - existing_nullable=True) + op.alter_column( + "item", + "description", + existing_type=sa.String(length=255), + type_=sa.String(), + existing_nullable=True, + ) diff --git a/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py b/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py index 37af1fa..962ab46 100755 --- a/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +++ b/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py @@ -5,6 +5,7 @@ Revises: 9c0a54914c78 Create Date: 2024-07-19 04:08:04.000976 """ + from alembic import op import sqlalchemy as sa import sqlmodel.sql.sqltypes @@ -12,8 +13,8 @@ from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. -revision = 'd98dd8ec85a3' -down_revision = '9c0a54914c78' +revision = "d98dd8ec85a3" +down_revision = "9c0a54914c78" branch_labels = None depends_on = None @@ -23,68 +24,97 @@ def upgrade(): op.execute('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"') # Create a new UUID column with a default UUID value - op.add_column('user', sa.Column('new_id', postgresql.UUID(as_uuid=True), default=sa.text('uuid_generate_v4()'))) - op.add_column('item', sa.Column('new_id', postgresql.UUID(as_uuid=True), default=sa.text('uuid_generate_v4()'))) - op.add_column('item', sa.Column('new_owner_id', postgresql.UUID(as_uuid=True), nullable=True)) + op.add_column( + "user", + sa.Column( + "new_id", + postgresql.UUID(as_uuid=True), + default=sa.text("uuid_generate_v4()"), + ), + ) + op.add_column( + "item", + sa.Column( + "new_id", + postgresql.UUID(as_uuid=True), + default=sa.text("uuid_generate_v4()"), + ), + ) + op.add_column( + "item", sa.Column("new_owner_id", postgresql.UUID(as_uuid=True), nullable=True) + ) # Populate the new columns with UUIDs op.execute('UPDATE "user" SET new_id = uuid_generate_v4()') - op.execute('UPDATE item SET new_id = uuid_generate_v4()') - op.execute('UPDATE item SET new_owner_id = (SELECT new_id FROM "user" WHERE "user".id = item.owner_id)') + op.execute("UPDATE item SET new_id = uuid_generate_v4()") + op.execute( + 'UPDATE item SET new_owner_id = (SELECT new_id FROM "user" WHERE "user".id = item.owner_id)' + ) # Set the new_id as not nullable - op.alter_column('user', 'new_id', nullable=False) - op.alter_column('item', 'new_id', nullable=False) + op.alter_column("user", "new_id", nullable=False) + op.alter_column("item", "new_id", nullable=False) # Drop old columns and rename new columns - op.drop_constraint('item_owner_id_fkey', 'item', type_='foreignkey') - op.drop_column('item', 'owner_id') - op.alter_column('item', 'new_owner_id', new_column_name='owner_id') + op.drop_constraint("item_owner_id_fkey", "item", type_="foreignkey") + op.drop_column("item", "owner_id") + op.alter_column("item", "new_owner_id", new_column_name="owner_id") - op.drop_column('user', 'id') - op.alter_column('user', 'new_id', new_column_name='id') + op.drop_column("user", "id") + op.alter_column("user", "new_id", new_column_name="id") - op.drop_column('item', 'id') - op.alter_column('item', 'new_id', new_column_name='id') + op.drop_column("item", "id") + op.alter_column("item", "new_id", new_column_name="id") # Create primary key constraint - op.create_primary_key('user_pkey', 'user', ['id']) - op.create_primary_key('item_pkey', 'item', ['id']) + op.create_primary_key("user_pkey", "user", ["id"]) + op.create_primary_key("item_pkey", "item", ["id"]) # Recreate foreign key constraint - op.create_foreign_key('item_owner_id_fkey', 'item', 'user', ['owner_id'], ['id']) + op.create_foreign_key("item_owner_id_fkey", "item", "user", ["owner_id"], ["id"]) + def downgrade(): # Reverse the upgrade process - op.add_column('user', sa.Column('old_id', sa.Integer, autoincrement=True)) - op.add_column('item', sa.Column('old_id', sa.Integer, autoincrement=True)) - op.add_column('item', sa.Column('old_owner_id', sa.Integer, nullable=True)) + op.add_column("user", sa.Column("old_id", sa.Integer, autoincrement=True)) + op.add_column("item", sa.Column("old_id", sa.Integer, autoincrement=True)) + op.add_column("item", sa.Column("old_owner_id", sa.Integer, nullable=True)) # Populate the old columns with default values # Generate sequences for the integer IDs if not exist - op.execute('CREATE SEQUENCE IF NOT EXISTS user_id_seq AS INTEGER OWNED BY "user".old_id') - op.execute('CREATE SEQUENCE IF NOT EXISTS item_id_seq AS INTEGER OWNED BY item.old_id') + op.execute( + 'CREATE SEQUENCE IF NOT EXISTS user_id_seq AS INTEGER OWNED BY "user".old_id' + ) + op.execute( + "CREATE SEQUENCE IF NOT EXISTS item_id_seq AS INTEGER OWNED BY item.old_id" + ) - op.execute('SELECT setval(\'user_id_seq\', COALESCE((SELECT MAX(old_id) + 1 FROM "user"), 1), false)') - op.execute('SELECT setval(\'item_id_seq\', COALESCE((SELECT MAX(old_id) + 1 FROM item), 1), false)') + op.execute( + "SELECT setval('user_id_seq', COALESCE((SELECT MAX(old_id) + 1 FROM \"user\"), 1), false)" + ) + op.execute( + "SELECT setval('item_id_seq', COALESCE((SELECT MAX(old_id) + 1 FROM item), 1), false)" + ) - op.execute('UPDATE "user" SET old_id = nextval(\'user_id_seq\')') - op.execute('UPDATE item SET old_id = nextval(\'item_id_seq\'), old_owner_id = (SELECT old_id FROM "user" WHERE "user".id = item.owner_id)') + op.execute("UPDATE \"user\" SET old_id = nextval('user_id_seq')") + op.execute( + 'UPDATE item SET old_id = nextval(\'item_id_seq\'), old_owner_id = (SELECT old_id FROM "user" WHERE "user".id = item.owner_id)' + ) # Drop new columns and rename old columns back - op.drop_constraint('item_owner_id_fkey', 'item', type_='foreignkey') - op.drop_column('item', 'owner_id') - op.alter_column('item', 'old_owner_id', new_column_name='owner_id') + op.drop_constraint("item_owner_id_fkey", "item", type_="foreignkey") + op.drop_column("item", "owner_id") + op.alter_column("item", "old_owner_id", new_column_name="owner_id") - op.drop_column('user', 'id') - op.alter_column('user', 'old_id', new_column_name='id') + op.drop_column("user", "id") + op.alter_column("user", "old_id", new_column_name="id") - op.drop_column('item', 'id') - op.alter_column('item', 'old_id', new_column_name='id') + op.drop_column("item", "id") + op.alter_column("item", "old_id", new_column_name="id") # Create primary key constraint - op.create_primary_key('user_pkey', 'user', ['id']) - op.create_primary_key('item_pkey', 'item', ['id']) + op.create_primary_key("user_pkey", "user", ["id"]) + op.create_primary_key("item_pkey", "item", ["id"]) # Recreate foreign key constraint - op.create_foreign_key('item_owner_id_fkey', 'item', 'user', ['owner_id'], ['id']) + op.create_foreign_key("item_owner_id_fkey", "item", "user", ["owner_id"], ["id"]) diff --git a/backend/app/alembic/versions/e2412789c190_initialize_models.py b/backend/app/alembic/versions/e2412789c190_initialize_models.py index 7529ea9..e8b8cac 100644 --- a/backend/app/alembic/versions/e2412789c190_initialize_models.py +++ b/backend/app/alembic/versions/e2412789c190_initialize_models.py @@ -5,6 +5,7 @@ Revises: Create Date: 2023-11-24 22:55:43.195942 """ + import sqlalchemy as sa import sqlmodel.sql.sqltypes from alembic import op diff --git a/backend/app/core/config.py b/backend/app/core/config.py index d58e03c..4316a4e 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -38,9 +38,9 @@ class Settings(BaseSettings): FRONTEND_HOST: str = "http://localhost:5173" ENVIRONMENT: Literal["local", "staging", "production"] = "local" - BACKEND_CORS_ORIGINS: Annotated[ - list[AnyUrl] | str, BeforeValidator(parse_cors) - ] = [] + BACKEND_CORS_ORIGINS: Annotated[list[AnyUrl] | str, BeforeValidator(parse_cors)] = ( + [] + ) @computed_field # type: ignore[prop-decorator] @property diff --git a/backend/app/models/base.py b/backend/app/models/base.py index a96a8ba..2830a02 100644 --- a/backend/app/models/base.py +++ b/backend/app/models/base.py @@ -9,6 +9,7 @@ from uuid import UUID as RowId class BaseSQLModel(SQLModel): pass + # endregion # region Generic message #######################################################