From 13c8a21ee445003e1e54233685244ecc7b5ceb75 Mon Sep 17 00:00:00 2001 From: Akhilesh Negi Date: Fri, 21 Mar 2025 20:39:22 +0530 Subject: [PATCH 1/3] fixing testcases and migrations --- backend/app/alembic/env.py | 2 +- .../versions/0d84ca709cfd_add_organization.py | 64 +++++++++++++++++++ backend/app/api/routes/users.py | 2 +- backend/app/models/__init__.py | 2 + backend/app/tests/api/routes/test_users.py | 3 +- 5 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 backend/app/alembic/versions/0d84ca709cfd_add_organization.py diff --git a/backend/app/alembic/env.py b/backend/app/alembic/env.py index 65ad841d..331f40ac 100755 --- a/backend/app/alembic/env.py +++ b/backend/app/alembic/env.py @@ -2,7 +2,7 @@ from logging.config import fileConfig from alembic import context -from sqlmodel import SQLModel +from app.models import SQLModel from sqlalchemy import engine_from_config, pool # this is the Alembic Config object, which provides diff --git a/backend/app/alembic/versions/0d84ca709cfd_add_organization.py b/backend/app/alembic/versions/0d84ca709cfd_add_organization.py new file mode 100644 index 00000000..4ab77a08 --- /dev/null +++ b/backend/app/alembic/versions/0d84ca709cfd_add_organization.py @@ -0,0 +1,64 @@ +"""add_organization + +Revision ID: 0d84ca709cfd +Revises: 1a31ce608336 +Create Date: 2025-03-21 20:22:30.716746 + +""" +from alembic import op +import sqlalchemy as sa +import sqlmodel.sql.sqltypes + + +# revision identifiers, used by Alembic. +revision = '0d84ca709cfd' +down_revision = '1a31ce608336' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('organization', + sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.PrimaryKeyConstraint('id') + ) + op.create_index(op.f('ix_organization_name'), 'organization', ['name'], unique=True) + op.create_table('project', + sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), + sa.Column('description', sqlmodel.sql.sqltypes.AutoString(length=500), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('organization_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['organization_id'], ['organization.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_index(op.f('ix_project_name'), 'project', ['name'], unique=False) + op.create_index(op.f('ix_project_organization_id'), 'project', ['organization_id'], unique=False) + op.create_table('projectuser', + sa.Column('project_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Uuid(), nullable=False), + sa.Column('is_admin', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.Column('updated_at', sa.DateTime(), nullable=False), + sa.Column('is_deleted', sa.Boolean(), nullable=False), + sa.Column('deleted_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['project_id'], ['project.id'], ondelete='CASCADE'), + sa.ForeignKeyConstraint(['user_id'], ['user.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('projectuser') + op.drop_index(op.f('ix_project_organization_id'), table_name='project') + op.drop_index(op.f('ix_project_name'), table_name='project') + op.drop_table('project') + op.drop_index(op.f('ix_organization_name'), table_name='organization') + op.drop_table('organization') + # ### end Alembic commands ### diff --git a/backend/app/api/routes/users.py b/backend/app/api/routes/users.py index 6edbfbeb..1d6a4f70 100644 --- a/backend/app/api/routes/users.py +++ b/backend/app/api/routes/users.py @@ -178,7 +178,7 @@ def read_user_by_id( dependencies=[Depends(get_current_active_superuser)], response_model=UserPublic, ) -def update_user( +def update_user_endpoint( *, session: SessionDep, user_id: uuid.UUID, diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py index 75789039..cf39b3c1 100644 --- a/backend/app/models/__init__.py +++ b/backend/app/models/__init__.py @@ -1,3 +1,5 @@ +from sqlmodel import SQLModel + from .auth import Token, TokenPayload from .item import Item, ItemCreate, ItemPublic, ItemsPublic, ItemUpdate from .message import Message diff --git a/backend/app/tests/api/routes/test_users.py b/backend/app/tests/api/routes/test_users.py index ba9be654..3f52f757 100644 --- a/backend/app/tests/api/routes/test_users.py +++ b/backend/app/tests/api/routes/test_users.py @@ -110,7 +110,7 @@ def test_get_existing_user_permissions_error( headers=normal_user_token_headers, ) assert r.status_code == 403 - assert r.json() == {"detail": "The user doesn't have enough privileges"} + assert r.json()["detail"] == "The user doesn't have enough privileges" def test_create_user_existing_username( @@ -334,6 +334,7 @@ def test_update_user( headers=superuser_token_headers, json=data, ) + print(r) assert r.status_code == 200 updated_user = r.json() From 78c7818dfffc80e8f2788e48a624a140674e49ad Mon Sep 17 00:00:00 2001 From: avirajsingh7 Date: Fri, 21 Mar 2025 20:56:18 +0530 Subject: [PATCH 2/3] changes migration file name --- ...fc325617_add_organization_project_setup.py | 64 +++++++++++++++++++ backend/app/tests/api/routes/test_users.py | 1 - 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 backend/app/alembic/versions/99f4fc325617_add_organization_project_setup.py diff --git a/backend/app/alembic/versions/99f4fc325617_add_organization_project_setup.py b/backend/app/alembic/versions/99f4fc325617_add_organization_project_setup.py new file mode 100644 index 00000000..581b881e --- /dev/null +++ b/backend/app/alembic/versions/99f4fc325617_add_organization_project_setup.py @@ -0,0 +1,64 @@ +"""add organization project setup + +Revision ID: 99f4fc325617 +Revises: 1a31ce608336 +Create Date: 2025-03-21 20:51:00.759926 + +""" +from alembic import op +import sqlalchemy as sa +import sqlmodel.sql.sqltypes + + +# revision identifiers, used by Alembic. +revision = '99f4fc325617' +down_revision = '1a31ce608336' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('organization', + sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.PrimaryKeyConstraint('id') + ) + op.create_index(op.f('ix_organization_name'), 'organization', ['name'], unique=True) + op.create_table('project', + sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), + sa.Column('description', sqlmodel.sql.sqltypes.AutoString(length=500), nullable=True), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('organization_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['organization_id'], ['organization.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_index(op.f('ix_project_name'), 'project', ['name'], unique=False) + op.create_index(op.f('ix_project_organization_id'), 'project', ['organization_id'], unique=False) + op.create_table('projectuser', + sa.Column('project_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Uuid(), nullable=False), + sa.Column('is_admin', sa.Boolean(), nullable=False), + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.Column('updated_at', sa.DateTime(), nullable=False), + sa.Column('is_deleted', sa.Boolean(), nullable=False), + sa.Column('deleted_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['project_id'], ['project.id'], ondelete='CASCADE'), + sa.ForeignKeyConstraint(['user_id'], ['user.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('projectuser') + op.drop_index(op.f('ix_project_organization_id'), table_name='project') + op.drop_index(op.f('ix_project_name'), table_name='project') + op.drop_table('project') + op.drop_index(op.f('ix_organization_name'), table_name='organization') + op.drop_table('organization') + # ### end Alembic commands ### diff --git a/backend/app/tests/api/routes/test_users.py b/backend/app/tests/api/routes/test_users.py index 3f52f757..68cb3ada 100644 --- a/backend/app/tests/api/routes/test_users.py +++ b/backend/app/tests/api/routes/test_users.py @@ -334,7 +334,6 @@ def test_update_user( headers=superuser_token_headers, json=data, ) - print(r) assert r.status_code == 200 updated_user = r.json() From 5e667625fd9f98b3951bab830cb05b44efa278e8 Mon Sep 17 00:00:00 2001 From: avirajsingh7 Date: Fri, 21 Mar 2025 20:58:09 +0530 Subject: [PATCH 3/3] remove old migration --- .../versions/0d84ca709cfd_add_organization.py | 64 ------------------- 1 file changed, 64 deletions(-) delete mode 100644 backend/app/alembic/versions/0d84ca709cfd_add_organization.py diff --git a/backend/app/alembic/versions/0d84ca709cfd_add_organization.py b/backend/app/alembic/versions/0d84ca709cfd_add_organization.py deleted file mode 100644 index 4ab77a08..00000000 --- a/backend/app/alembic/versions/0d84ca709cfd_add_organization.py +++ /dev/null @@ -1,64 +0,0 @@ -"""add_organization - -Revision ID: 0d84ca709cfd -Revises: 1a31ce608336 -Create Date: 2025-03-21 20:22:30.716746 - -""" -from alembic import op -import sqlalchemy as sa -import sqlmodel.sql.sqltypes - - -# revision identifiers, used by Alembic. -revision = '0d84ca709cfd' -down_revision = '1a31ce608336' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('organization', - sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('id', sa.Integer(), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_organization_name'), 'organization', ['name'], unique=True) - op.create_table('project', - sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False), - sa.Column('description', sqlmodel.sql.sqltypes.AutoString(length=500), nullable=True), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('organization_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['organization_id'], ['organization.id'], ), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_project_name'), 'project', ['name'], unique=False) - op.create_index(op.f('ix_project_organization_id'), 'project', ['organization_id'], unique=False) - op.create_table('projectuser', - sa.Column('project_id', sa.Integer(), nullable=False), - sa.Column('user_id', sa.Uuid(), nullable=False), - sa.Column('is_admin', sa.Boolean(), nullable=False), - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('created_at', sa.DateTime(), nullable=False), - sa.Column('updated_at', sa.DateTime(), nullable=False), - sa.Column('is_deleted', sa.Boolean(), nullable=False), - sa.Column('deleted_at', sa.DateTime(), nullable=True), - sa.ForeignKeyConstraint(['project_id'], ['project.id'], ondelete='CASCADE'), - sa.ForeignKeyConstraint(['user_id'], ['user.id'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('projectuser') - op.drop_index(op.f('ix_project_organization_id'), table_name='project') - op.drop_index(op.f('ix_project_name'), table_name='project') - op.drop_table('project') - op.drop_index(op.f('ix_organization_name'), table_name='organization') - op.drop_table('organization') - # ### end Alembic commands ###