From 38125eb2ba28073a189c89d42be858dfd98d1a98 Mon Sep 17 00:00:00 2001 From: foefl Date: Fri, 10 Jul 2026 09:30:14 +0200 Subject: [PATCH] update DB schema --- ...b0606094_updated_timestamps_nullability.py | 48 +++++++++++++++++++ data_model/project_db_schema.aml | 4 +- src/wce_crm/db.py | 4 +- 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 alembic/versions/c285b0606094_updated_timestamps_nullability.py diff --git a/alembic/versions/c285b0606094_updated_timestamps_nullability.py b/alembic/versions/c285b0606094_updated_timestamps_nullability.py new file mode 100644 index 0000000..438c227 --- /dev/null +++ b/alembic/versions/c285b0606094_updated_timestamps_nullability.py @@ -0,0 +1,48 @@ +"""updated timestamps nullability + +Revision ID: c285b0606094 +Revises: 2afa4e506448 +Create Date: 2026-07-10 09:22:12.340425 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "c285b0606094" +down_revision: Union[str, Sequence[str], None] = "2afa4e506448" +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! ### + with op.batch_alter_table("beratung_einzelberatung") as batch_op: + batch_op.alter_column( + "aktualisiert", + existing_type=sa.DATETIME(), + nullable=False, + ) + + with op.batch_alter_table("beratung_vorgang") as batch_op: + batch_op.alter_column("aktualisiert", existing_type=sa.DATETIME(), nullable=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("beratung_einzelberatung") as batch_op: + batch_op.alter_column( + "aktualisiert", + existing_type=sa.DATETIME(), + nullable=True, + ) + + with op.batch_alter_table("beratung_vorgang") as batch_op: + batch_op.alter_column("aktualisiert", existing_type=sa.DATETIME(), nullable=True) + # ### end Alembic commands ### diff --git a/data_model/project_db_schema.aml b/data_model/project_db_schema.aml index ffd0d98..ef66756 100644 --- a/data_model/project_db_schema.aml +++ b/data_model/project_db_schema.aml @@ -86,7 +86,7 @@ Beratung_Vorgang | Beratung kann an Unternehmen allein (pauschal), Person allein titel text beratung_typ berat_typ(pauschal, individual) erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` - aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable {on_update: `datetime.datetime.now(datetime.UTC)`} + aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` {on_update: `datetime.datetime.now(datetime.UTC)`} temporaer bool | Gibt an, ob der Vorgang losgelöst von der Grunderfassung gestartet wurde (Daten müssen nachträglich zugeordnet werden); theoretisch auch erfüllt, wenn `un_id` und `pers_id` beide NULL sind @@ -94,7 +94,7 @@ Beratung_Einzelberatung | Änderungen müssen über einen DB-Trigger an Elternta beratung_id int pk {autoIncrement} vorgang_id int -> Beratung_Vorgang(vorgang_id) | Jede Beratung muss zu einem Beratungsvorgang gehören. erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger - aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable {on_update: `datetime.datetime.now(datetime.UTC)`} | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger + aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` {on_update: `datetime.datetime.now(datetime.UTC)`} | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger nutzer_id int | externe Nutzerverwaltung nutzer_name text | externe Nutzerverwaltung zeitstempel "timestamp with time zone" | Nutzereingabe diff --git a/src/wce_crm/db.py b/src/wce_crm/db.py index efa699b..25f9129 100644 --- a/src/wce_crm/db.py +++ b/src/wce_crm/db.py @@ -398,7 +398,7 @@ beratung_vorgang: sql.Table = Table( Column( "aktualisiert", UTCDateTime, - nullable=True, + nullable=False, default=lambda: datetime.datetime.now(datetime.UTC), onupdate=lambda: datetime.datetime.now(datetime.UTC), ), @@ -437,7 +437,7 @@ beratung_einzelberatung: sql.Table = Table( Column( "aktualisiert", UTCDateTime, - nullable=True, + nullable=False, default=lambda: datetime.datetime.now(datetime.UTC), onupdate=lambda: datetime.datetime.now(datetime.UTC), ),