diff --git a/migrations/versions/05154ca469fb_merge_auth_feature_and_forum_features.py b/migrations/versions/05154ca469fb_merge_auth_feature_and_forum_features.py index 749b871..7f94837 100644 --- a/migrations/versions/05154ca469fb_merge_auth_feature_and_forum_features.py +++ b/migrations/versions/05154ca469fb_merge_auth_feature_and_forum_features.py @@ -5,6 +5,7 @@ Create Date: 2024-11-29 02:20:58.666026 """ + from typing import Sequence, Union from alembic import op @@ -13,8 +14,8 @@ # revision identifiers, used by Alembic. -revision: str = '05154ca469fb' -down_revision: Union[str, None] = ('4abbc03d3542', '64a70f848243') +revision: str = "05154ca469fb" +down_revision: Union[str, None] = ("4abbc03d3542", "64a70f848243") branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None diff --git a/migrations/versions/4abbc03d3542_remove_cognito_id.py b/migrations/versions/4abbc03d3542_remove_cognito_id.py index 1c5878b..4b0e2ff 100644 --- a/migrations/versions/4abbc03d3542_remove_cognito_id.py +++ b/migrations/versions/4abbc03d3542_remove_cognito_id.py @@ -5,6 +5,7 @@ Create Date: 2024-10-21 10:20:36.125454 """ + from typing import Sequence, Union from alembic import op @@ -13,19 +14,22 @@ # revision identifiers, used by Alembic. -revision: str = '4abbc03d3542' -down_revision: Union[str, None] = '57a9e9d23571' +revision: str = "4abbc03d3542" +down_revision: Union[str, None] = "57a9e9d23571" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('user', 'cognito_id') + op.drop_column("user", "cognito_id") # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.add_column('user', sa.Column('cognito_id', sa.VARCHAR(), autoincrement=False, nullable=False)) + op.add_column( + "user", + sa.Column("cognito_id", sa.VARCHAR(), autoincrement=False, nullable=False), + ) # ### end Alembic commands ### diff --git a/migrations/versions/57a9e9d23571_remove_username_column.py b/migrations/versions/57a9e9d23571_remove_username_column.py index 3d0479f..7a60737 100644 --- a/migrations/versions/57a9e9d23571_remove_username_column.py +++ b/migrations/versions/57a9e9d23571_remove_username_column.py @@ -5,6 +5,7 @@ Create Date: 2024-10-21 09:58:50.762272 """ + from typing import Sequence, Union from alembic import op @@ -13,21 +14,23 @@ # revision identifiers, used by Alembic. -revision: str = '57a9e9d23571' -down_revision: Union[str, None] = 'ee57778bea39' +revision: str = "57a9e9d23571" +down_revision: Union[str, None] = "ee57778bea39" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.drop_index('ix_user_username', table_name='user') - op.drop_column('user', 'username') + op.drop_index("ix_user_username", table_name="user") + op.drop_column("user", "username") # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.add_column('user', sa.Column('username', sa.VARCHAR(), autoincrement=False, nullable=False)) - op.create_index('ix_user_username', 'user', ['username'], unique=True) + op.add_column( + "user", sa.Column("username", sa.VARCHAR(), autoincrement=False, nullable=False) + ) + op.create_index("ix_user_username", "user", ["username"], unique=True) # ### end Alembic commands ### diff --git a/migrations/versions/ee57778bea39_classroom_solicitation_feature.py b/migrations/versions/ee57778bea39_classroom_solicitation_feature.py index 74a8929..6e25793 100644 --- a/migrations/versions/ee57778bea39_classroom_solicitation_feature.py +++ b/migrations/versions/ee57778bea39_classroom_solicitation_feature.py @@ -5,6 +5,7 @@ Create Date: 2024-11-29 02:14:13.082106 """ + from typing import Sequence, Union from alembic import op @@ -13,57 +14,95 @@ # revision identifiers, used by Alembic. -revision: str = 'ee57778bea39' -down_revision: Union[str, None] = '3c251cc63118' +revision: str = "ee57778bea39" +down_revision: Union[str, None] = "3c251cc63118" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.create_table('classroomsolicitation', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('classroom_id', sa.Integer(), nullable=True), - sa.Column('required_classroom', sa.Boolean(), nullable=False), - sa.Column('building_id', sa.Integer(), nullable=False), - sa.Column('user_id', sa.Integer(), nullable=False), - sa.Column('reservation_id', sa.Integer(), nullable=True), - sa.Column('reason', sqlmodel.sql.sqltypes.AutoString(), nullable=True), - sa.Column('reservation_title', sqlmodel.sql.sqltypes.AutoString(), nullable=False), - sa.Column('reservation_type', sa.Enum('EXAM', 'MEETING', 'EVENT', 'OTHER', name='reservationtype'), nullable=False), - sa.Column('dates', sa.ARRAY(sa.Date()), nullable=True), - sa.Column('start_time', sa.Time(), nullable=True), - sa.Column('end_time', sa.Time(), nullable=True), - sa.Column('capacity', sa.Integer(), nullable=False), - sa.Column('approved', sa.Boolean(), nullable=False), - sa.Column('denied', sa.Boolean(), nullable=False), - sa.Column('closed', sa.Boolean(), nullable=False), - sa.Column('closed_by', sqlmodel.sql.sqltypes.AutoString(), nullable=True), - sa.Column('created_at', sa.DateTime(), nullable=False), - sa.Column('updated_at', sa.DateTime(), nullable=False), - sa.CheckConstraint('(classroom_id IS NOT NULL) OR (required_classroom = FALSE)', name='check_required_classroom_with_classroom_id_not_null'), - sa.ForeignKeyConstraint(['building_id'], ['building.id'], ), - sa.ForeignKeyConstraint(['classroom_id'], ['classroom.id'], ), - sa.ForeignKeyConstraint(['reservation_id'], ['reservation.id'], ), - sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), - sa.PrimaryKeyConstraint('id') + op.create_table( + "classroomsolicitation", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("classroom_id", sa.Integer(), nullable=True), + sa.Column("required_classroom", sa.Boolean(), nullable=False), + sa.Column("building_id", sa.Integer(), nullable=False), + sa.Column("user_id", sa.Integer(), nullable=False), + sa.Column("reservation_id", sa.Integer(), nullable=True), + sa.Column("reason", sqlmodel.sql.sqltypes.AutoString(), nullable=True), + sa.Column( + "reservation_title", sqlmodel.sql.sqltypes.AutoString(), nullable=False + ), + sa.Column( + "reservation_type", + sa.Enum("EXAM", "MEETING", "EVENT", "OTHER", name="reservationtype"), + nullable=False, + ), + sa.Column("dates", sa.ARRAY(sa.Date()), nullable=True), + sa.Column("start_time", sa.Time(), nullable=True), + sa.Column("end_time", sa.Time(), nullable=True), + sa.Column("capacity", sa.Integer(), nullable=False), + sa.Column("approved", sa.Boolean(), nullable=False), + sa.Column("denied", sa.Boolean(), nullable=False), + sa.Column("closed", sa.Boolean(), nullable=False), + sa.Column("closed_by", sqlmodel.sql.sqltypes.AutoString(), nullable=True), + sa.Column("created_at", sa.DateTime(), nullable=False), + sa.Column("updated_at", sa.DateTime(), nullable=False), + sa.CheckConstraint( + "(classroom_id IS NOT NULL) OR (required_classroom = FALSE)", + name="check_required_classroom_with_classroom_id_not_null", + ), + sa.ForeignKeyConstraint( + ["building_id"], + ["building.id"], + ), + sa.ForeignKeyConstraint( + ["classroom_id"], + ["classroom.id"], + ), + sa.ForeignKeyConstraint( + ["reservation_id"], + ["reservation.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["user.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + op.add_column( + "reservation", + sa.Column("title", sqlmodel.sql.sqltypes.AutoString(), nullable=False), + ) + op.add_column( + "reservation", + sa.Column("reason", sqlmodel.sql.sqltypes.AutoString(), nullable=True), + ) + op.drop_constraint( + "unique_reservation_name_for_classroom", "reservation", type_="unique" ) - op.add_column('reservation', sa.Column('title', sqlmodel.sql.sqltypes.AutoString(), nullable=False)) - op.add_column('reservation', sa.Column('reason', sqlmodel.sql.sqltypes.AutoString(), nullable=True)) - op.drop_constraint('unique_reservation_name_for_classroom', 'reservation', type_='unique') - op.drop_column('reservation', 'description') - op.drop_column('reservation', 'name') - op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=True) + op.drop_column("reservation", "description") + op.drop_column("reservation", "name") + op.create_index(op.f("ix_user_email"), "user", ["email"], unique=True) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_user_email'), table_name='user') - op.add_column('reservation', sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=False)) - op.add_column('reservation', sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True)) - op.create_unique_constraint('unique_reservation_name_for_classroom', 'reservation', ['name', 'classroom_id']) - op.drop_column('reservation', 'reason') - op.drop_column('reservation', 'title') - op.drop_table('classroomsolicitation') + op.drop_index(op.f("ix_user_email"), table_name="user") + op.add_column( + "reservation", + sa.Column("name", sa.VARCHAR(), autoincrement=False, nullable=False), + ) + op.add_column( + "reservation", + sa.Column("description", sa.VARCHAR(), autoincrement=False, nullable=True), + ) + op.create_unique_constraint( + "unique_reservation_name_for_classroom", "reservation", ["name", "classroom_id"] + ) + op.drop_column("reservation", "reason") + op.drop_column("reservation", "title") + op.drop_table("classroomsolicitation") # ### end Alembic commands ### diff --git a/server/repositories/forum_repository.py b/server/repositories/forum_repository.py index c729031..82e94f3 100644 --- a/server/repositories/forum_repository.py +++ b/server/repositories/forum_repository.py @@ -69,8 +69,8 @@ def get_all_posts( select(ForumPost) .where( col(ForumPost.subject_id) == subject_id, - col(ForumPost.enabled) == True, - ForumPost.content.ilike(search_term), + col(ForumPost.enabled) == True, # noqa: E712 + ForumPost.content.ilike(search_term), # type: ignore ) .order_by(col(ForumPost.created_at).desc()) ) diff --git a/server/scripts/dumps/filter.py b/server/scripts/dumps/filter.py index fed2fb9..d48ed5a 100644 --- a/server/scripts/dumps/filter.py +++ b/server/scripts/dumps/filter.py @@ -1,8 +1,9 @@ import csv + # Função para processar e converter o dump para CSV def dump_to_csv(dump_file: str, csv_file: str) -> None: - with open(dump_file, 'r', encoding='utf-8') as file: # noqa: UP015 + with open(dump_file, "r", encoding="utf-8") as file: # noqa: UP015 lines = file.readlines() # Aqui você pode ajustar a lógica para filtrar os dados de interesse @@ -26,19 +27,24 @@ def dump_to_csv(dump_file: str, csv_file: str) -> None: # Limpa a linha de qualquer excesso de espaços ou caracteres desnecessários cleaned_line = line.strip() if cleaned_line: # Só adiciona linhas não vazias - data.append(cleaned_line.split('\t')) # Divide por tabulação + data.append(cleaned_line.split("\t")) # Divide por tabulação # Escreve os dados no arquivo CSV - with open(csv_file, 'w', newline='', encoding='utf-8') as csvfile: + with open(csv_file, "w", newline="", encoding="utf-8") as csvfile: writer = csv.writer(csvfile) - writer.writerow(["id", "name", "created_by_id", "updated_at"]) # Cabeçalhos do CSV + writer.writerow( + ["id", "name", "created_by_id", "updated_at"] + ) # Cabeçalhos do CSV writer.writerows(data) # Escreve as linhas de dados print(f"Dados salvos no CSV: {csv_file}") + # Caminho dos arquivos -dump_file = 'dump-uspolis-202411071451.sql' # Substitua com o nome do seu arquivo de dump -csv_file = 'classroom.csv' # Nome do arquivo CSV que será gerado +dump_file = ( + "dump-uspolis-202411071451.sql" # Substitua com o nome do seu arquivo de dump +) +csv_file = "classroom.csv" # Nome do arquivo CSV que será gerado # Chama a função para converter o dump para CSV dump_to_csv(dump_file, csv_file) diff --git a/server/scripts/dumps/fix_dump.py b/server/scripts/dumps/fix_dump.py new file mode 100644 index 0000000..2268490 --- /dev/null +++ b/server/scripts/dumps/fix_dump.py @@ -0,0 +1,26 @@ +from sqlalchemy import text +from sqlmodel import Session, create_engine +from server.config import CONFIG + +# Configure sua conexão com o banco de dados +engine = create_engine(f"{CONFIG.db_uri}/{CONFIG.db_database}") + + +# Função para atualizar a sequência +def update_sequence(table_name: str, column_name: str) -> None: + with Session(engine) as session: + session.execute( + text(f""" + SELECT setval( + pg_get_serial_sequence(:table_name, :column_name), + (SELECT MAX({column_name}) FROM {table_name}) + 1, + false + ) + """), + {"table_name": table_name, "column_name": column_name} + ) + session.commit() + +# Atualize as tabelas necessárias +update_sequence("buildings", "id") +update_sequence("classrooms", "id") diff --git a/server/scripts/dumps/load_csv.py b/server/scripts/dumps/load_csv.py index 8a47127..d3146d3 100644 --- a/server/scripts/dumps/load_csv.py +++ b/server/scripts/dumps/load_csv.py @@ -53,27 +53,26 @@ def load_csv_to_db(csv_file: str) -> None: # session.add(building) # Caso você tenha uma tabela Classroom também no CSV - if True: - classroom = classroom_db_model.Classroom( - name=row["name"], # type: ignore - capacity=row["capacity"], # type: ignore - floor=row["floor"], # type: ignore - ignore_to_allocate=True - if row["ignore_to_allocate"] == "t" - else False, # type: ignore - accessibility=True - if row["accessibility"] == "t" - else False, # type: ignore - projector=True if row["projector"] == "t" else False, # type: ignore - air_conditioning=True - if row["air_conditioning"] == "t" - else False, # type: ignore - updated_at=row["updated_at"], # type: ignore - created_by_id=1, # type: ignore - building_id=row["building_id"], # type: ignore - id=row["id"], # type: ignore - ) - session.add(classroom) + classroom = classroom_db_model.Classroom( + name=row["name"], # type: ignore + capacity=row["capacity"], # type: ignore + floor=row["floor"], # type: ignore + ignore_to_allocate=True + if row["ignore_to_allocate"] == "t" + else False, # type: ignore + accessibility=True + if row["accessibility"] == "t" + else False, # type: ignore + projector=True if row["projector"] == "t" else False, # type: ignore + air_conditioning=True + if row["air_conditioning"] == "t" + else False, # type: ignore + updated_at=row["updated_at"], # type: ignore + created_by_id=1, # type: ignore + building_id=row["building_id"], # type: ignore + id=row["id"], # type: ignore + ) + session.add(classroom) # Commit para salvar todas as instâncias no banco session.commit()