generated from dopt-python/py311
change database schema for consulting sessions
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
"""adding consulting sessions
|
||||||
|
|
||||||
|
Revision ID: 2afa4e506448
|
||||||
|
Revises: 1a8e957522a4
|
||||||
|
Create Date: 2026-07-09 14:21:24.586706
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
import wce_crm.db
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = "2afa4e506448"
|
||||||
|
down_revision: Union[str, Sequence[str], None] = "1a8e957522a4"
|
||||||
|
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.create_table(
|
||||||
|
"beratung_vorgang",
|
||||||
|
sa.Column("vorgang_id", sa.Integer(), autoincrement=True, nullable=False),
|
||||||
|
sa.Column("un_id", sa.Integer(), nullable=True),
|
||||||
|
sa.Column("pers_id", sa.Integer(), nullable=True),
|
||||||
|
sa.Column("titel", sa.Text(), nullable=False),
|
||||||
|
sa.Column("beratungs_typ", sa.String(length=20), nullable=False),
|
||||||
|
sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False),
|
||||||
|
sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(
|
||||||
|
["pers_id"],
|
||||||
|
["grunderfassung_personen.pers_id"],
|
||||||
|
),
|
||||||
|
sa.ForeignKeyConstraint(
|
||||||
|
["un_id"],
|
||||||
|
["grunderfassung_unternehmen.un_id"],
|
||||||
|
),
|
||||||
|
sa.PrimaryKeyConstraint("vorgang_id"),
|
||||||
|
)
|
||||||
|
op.create_table(
|
||||||
|
"beratung_einzelberatung",
|
||||||
|
sa.Column("beratung_id", sa.Integer(), autoincrement=True, nullable=False),
|
||||||
|
sa.Column("vorgang_id", sa.Integer(), nullable=False),
|
||||||
|
sa.Column("nutzer_id", sa.Integer(), nullable=False),
|
||||||
|
sa.Column("nutzer_name", sa.String(length=20), nullable=False),
|
||||||
|
sa.Column("zeitstempel", wce_crm.db.UTCDateTime(), nullable=False),
|
||||||
|
sa.Column("ansprechpartner", sa.Text(), nullable=False),
|
||||||
|
sa.Column("kommunikationsweg", sa.Text(), nullable=False),
|
||||||
|
sa.Column("thema_crm_matrix", sa.Text(), nullable=True),
|
||||||
|
sa.Column("anmerkungen", sa.Text(), nullable=True),
|
||||||
|
sa.Column("rueckmeldung", sa.Text(), nullable=True),
|
||||||
|
sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False),
|
||||||
|
sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=True),
|
||||||
|
sa.ForeignKeyConstraint(
|
||||||
|
["vorgang_id"],
|
||||||
|
["beratung_vorgang.vorgang_id"],
|
||||||
|
),
|
||||||
|
sa.PrimaryKeyConstraint("beratung_id"),
|
||||||
|
)
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
"""Downgrade schema."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_table("beratung_einzelberatung")
|
||||||
|
op.drop_table("beratung_vorgang")
|
||||||
|
# ### end Alembic commands ###
|
||||||
@@ -85,7 +85,7 @@ Beratung_Vorgang | Beratung kann an Unternehmen allein (pauschal), Person allein
|
|||||||
pers_id int nullable -> Grunderfassung_Personen(pers_id) | sowohl Pauschal- als auch Individualberatung bei Personenbindung möglich
|
pers_id int nullable -> Grunderfassung_Personen(pers_id) | sowohl Pauschal- als auch Individualberatung bei Personenbindung möglich
|
||||||
titel text
|
titel text
|
||||||
beratung_typ berat_typ(pauschal, individual)
|
beratung_typ berat_typ(pauschal, individual)
|
||||||
erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable
|
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)` nullable {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
|
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
|
||||||
|
|
||||||
@@ -93,12 +93,14 @@ Beratung_Vorgang | Beratung kann an Unternehmen allein (pauschal), Person allein
|
|||||||
Beratung_Einzelberatung | Änderungen müssen über einen DB-Trigger an Elterntabelle zurückgeschrieben werden
|
Beratung_Einzelberatung | Änderungen müssen über einen DB-Trigger an Elterntabelle zurückgeschrieben werden
|
||||||
beratung_id int pk {autoIncrement}
|
beratung_id int pk {autoIncrement}
|
||||||
vorgang_id int -> Beratung_Vorgang(vorgang_id) | Jede Beratung muss zu einem Beratungsvorgang gehören.
|
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)` nullable | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger
|
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)` nullable {on_update: `datetime.datetime.now(datetime.UTC)`} | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger
|
||||||
nutzer_id int | externe Nutzerverwaltung
|
nutzer_id int | externe Nutzerverwaltung
|
||||||
nutzer_name text | externe Nuttzerverwaltung
|
nutzer_name text | externe Nutzerverwaltung
|
||||||
ansprechpartner text nullable
|
zeitstempel "timestamp with time zone" | Nutzereingabe
|
||||||
thema text nullable | Verlinkung ins CRM, genaue Gestaltung noch unklar
|
ansprechpartner text
|
||||||
|
kommunikationsweg text
|
||||||
|
thema_crm_matrix text nullable | Verlinkung ins CRM, genaue Gestaltung noch unklar
|
||||||
anmerkungen text nullable
|
anmerkungen text nullable
|
||||||
rueckmeldung txt nullable
|
rueckmeldung txt nullable
|
||||||
|
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ class FlatBaseModel(BaseModel):
|
|||||||
return dict(items)
|
return dict(items)
|
||||||
|
|
||||||
|
|
||||||
|
# ** InitRec
|
||||||
class Grunderfassung_Unternehmen(FlatBaseModel):
|
class Grunderfassung_Unternehmen(FlatBaseModel):
|
||||||
# default in SQLAlchemy with lambda and timezone-aware datetime
|
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||||
Metadaten_erstellung: AwareDatetime | None = None
|
Metadaten_erstellung: AwareDatetime | None = None
|
||||||
@@ -342,3 +343,35 @@ class Grunderfassung_Sprachen(BaseModel):
|
|||||||
SP_nachweis: str | None
|
SP_nachweis: str | None
|
||||||
SP_art_nachweis: str | None = None
|
SP_art_nachweis: str | None = None
|
||||||
SP_datum_nachweis: datetime.date | None = None
|
SP_datum_nachweis: datetime.date | None = None
|
||||||
|
|
||||||
|
|
||||||
|
# ** Consulting
|
||||||
|
class Beratungsgespraech(BaseModel):
|
||||||
|
model_config = ConfigDict(str_strip_whitespace=True)
|
||||||
|
|
||||||
|
un_id: int | None
|
||||||
|
pers_id: int | None
|
||||||
|
titel: str
|
||||||
|
beratungs_typ: str
|
||||||
|
|
||||||
|
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||||
|
erstellt: AwareDatetime | None = None
|
||||||
|
aktualisiert: AwareDatetime | None = None # see above
|
||||||
|
|
||||||
|
|
||||||
|
class Beratungsgespraech_Vorgang(BaseModel):
|
||||||
|
model_config = ConfigDict(str_strip_whitespace=True)
|
||||||
|
|
||||||
|
vorgang_id: int
|
||||||
|
nutzer_id: int
|
||||||
|
nutzer_name: str
|
||||||
|
zeitstempel: AwareDatetime
|
||||||
|
ansprechpartner: str
|
||||||
|
kommunikationsweg: str
|
||||||
|
thema_crm_matrix: str | None
|
||||||
|
anmerkungen: str | None
|
||||||
|
rueckmeldung: str | None
|
||||||
|
|
||||||
|
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||||
|
erstellt: AwareDatetime | None = None
|
||||||
|
aktualisiert: AwareDatetime | None = None # see above
|
||||||
|
|||||||
@@ -374,3 +374,71 @@ zuordnung_personen_unternehmen: sql.Table = Table(
|
|||||||
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
beratung_vorgang: sql.Table = Table(
|
||||||
|
"beratung_vorgang",
|
||||||
|
MD_MAIN,
|
||||||
|
Column(
|
||||||
|
"vorgang_id",
|
||||||
|
sql.Integer,
|
||||||
|
primary_key=True,
|
||||||
|
autoincrement=True,
|
||||||
|
),
|
||||||
|
Column("un_id", sql.ForeignKey("grunderfassung_unternehmen.un_id"), nullable=True),
|
||||||
|
Column("pers_id", sql.ForeignKey("grunderfassung_personen.pers_id"), nullable=True),
|
||||||
|
Column("titel", sql.Text, nullable=False),
|
||||||
|
Column("beratungs_typ", sql.String(20), nullable=False),
|
||||||
|
Column(
|
||||||
|
"erstellt",
|
||||||
|
UTCDateTime,
|
||||||
|
nullable=False,
|
||||||
|
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
"aktualisiert",
|
||||||
|
UTCDateTime,
|
||||||
|
nullable=True,
|
||||||
|
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
beratung_einzelberatung: sql.Table = Table(
|
||||||
|
"beratung_einzelberatung",
|
||||||
|
MD_MAIN,
|
||||||
|
Column(
|
||||||
|
"beratung_id",
|
||||||
|
sql.Integer,
|
||||||
|
primary_key=True,
|
||||||
|
autoincrement=True,
|
||||||
|
),
|
||||||
|
Column("vorgang_id", sql.ForeignKey("beratung_vorgang.vorgang_id"), nullable=False),
|
||||||
|
Column("nutzer_id", sql.Integer, nullable=False),
|
||||||
|
Column("nutzer_name", sql.String(20), nullable=False),
|
||||||
|
Column(
|
||||||
|
"zeitstempel",
|
||||||
|
UTCDateTime,
|
||||||
|
nullable=False,
|
||||||
|
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
),
|
||||||
|
Column("ansprechpartner", sql.Text, nullable=False),
|
||||||
|
Column("kommunikationsweg", sql.Text, nullable=False),
|
||||||
|
Column("thema_crm_matrix", sql.Text, nullable=True),
|
||||||
|
Column("anmerkungen", sql.Text, nullable=True),
|
||||||
|
Column("rueckmeldung", sql.Text, nullable=True),
|
||||||
|
Column(
|
||||||
|
"erstellt",
|
||||||
|
UTCDateTime,
|
||||||
|
nullable=False,
|
||||||
|
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
"aktualisiert",
|
||||||
|
UTCDateTime,
|
||||||
|
nullable=True,
|
||||||
|
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user