diff --git a/alembic/env.py b/alembic/env.py index d2fc42f..a9d58f7 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -47,6 +47,8 @@ def run_migrations_online() -> None: context.configure( connection=connection, target_metadata=target_metadata, + compare_type=True, + compare_server_default=True, ) with context.begin_transaction(): context.run_migrations() diff --git a/alembic/versions/1f1d3d560ccb_db_defaults_enum_binding_for_uploaded_.py b/alembic/versions/1f1d3d560ccb_db_defaults_enum_binding_for_uploaded_.py new file mode 100644 index 0000000..9457a12 --- /dev/null +++ b/alembic/versions/1f1d3d560ccb_db_defaults_enum_binding_for_uploaded_.py @@ -0,0 +1,46 @@ +"""db defaults + enum binding for uploaded_files + +Revision ID: 1f1d3d560ccb +Revises: 270ba252bc11 +Create Date: 2025-08-14 17:11:41.866908 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = '1f1d3d560ccb' +down_revision: Union[str, None] = '270ba252bc11' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('uploaded_files', 's3_file_upload_timestamp', + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=False) + op.alter_column('uploaded_files', 's3_json_upload_timestamp', + existing_type=postgresql.TIMESTAMP(), + type_=sa.DateTime(timezone=True), + existing_nullable=True) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('uploaded_files', 's3_json_upload_timestamp', + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=True) + op.alter_column('uploaded_files', 's3_file_upload_timestamp', + existing_type=sa.DateTime(timezone=True), + type_=postgresql.TIMESTAMP(), + existing_nullable=False) + # ### end Alembic commands ### diff --git a/alembic/versions/253a1047c623_auto_generate_id.py b/alembic/versions/253a1047c623_auto_generate_id.py new file mode 100644 index 0000000..02d4736 --- /dev/null +++ b/alembic/versions/253a1047c623_auto_generate_id.py @@ -0,0 +1,46 @@ +"""auto generate id + +Revision ID: 253a1047c623 +Revises: e8507a27795a +Create Date: 2025-08-14 17:25:54.010315 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = '253a1047c623' +down_revision: Union[str, None] = 'e8507a27795a' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('uploaded_files', 'id', + existing_type=sa.UUID(), + server_default=sa.text('gen_random_uuid()'), + existing_nullable=False) + op.alter_column('uploaded_files', 's3_file_upload_timestamp', + existing_type=postgresql.TIMESTAMP(timezone=True), + server_default=sa.text("NOW() AT TIME ZONE 'utc'"), + existing_nullable=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('uploaded_files', 's3_file_upload_timestamp', + existing_type=postgresql.TIMESTAMP(timezone=True), + server_default=None, + existing_nullable=False) + op.alter_column('uploaded_files', 'id', + existing_type=sa.UUID(), + server_default=None, + existing_nullable=False) + # ### end Alembic commands ### diff --git a/alembic/versions/e8507a27795a_auto_generate_id.py b/alembic/versions/e8507a27795a_auto_generate_id.py new file mode 100644 index 0000000..3b754ae --- /dev/null +++ b/alembic/versions/e8507a27795a_auto_generate_id.py @@ -0,0 +1,32 @@ +"""auto generate id + +Revision ID: e8507a27795a +Revises: 1f1d3d560ccb +Create Date: 2025-08-14 17:20:03.632337 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'e8507a27795a' +down_revision: Union[str, None] = '1f1d3d560ccb' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/etl/models/topLevel.py b/etl/models/topLevel.py index ee958fc..4a06b80 100644 --- a/etl/models/topLevel.py +++ b/etl/models/topLevel.py @@ -15,11 +15,11 @@ class BaseModel(SQLModel): sa_column=Column( UUID(as_uuid=True), primary_key=True, - server_default=text("gen_random_uuid()"), # or: text("uuid_generate_v4()") nullable=False, + server_default=text("gen_random_uuid()"), # requires pgcrypto extension ) ) - + # class Buildings(BaseModel, table=True): # address: str # postcode: str