"""major change in data model Revision ID: 8000d15faf03 Revises: 665259cdfdc0 Create Date: 2026-07-24 15:13:57.443684 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op import wce_crm.db # revision identifiers, used by Alembic. revision: str = "8000d15faf03" down_revision: Union[str, Sequence[str], None] = "665259cdfdc0" 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.drop_table("grunderfassung_personen") op.drop_table("beratung_vorgang") op.drop_table("grunderfassung_unternehmen") with op.batch_alter_table("zuordnung_personen_unternehmen", schema=None) as batch_op: batch_op.drop_index( batch_op.f("uq_aktive_zuordnung"), sqlite_where=sa.text("gueltig_bis IS NULL") ) op.drop_table("zuordnung_personen_unternehmen") op.drop_table("beratung_einzelberatung") op.create_table( "Grunderfassung_Personen", sa.Column("pers_id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False), sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=False), sa.Column("geloescht", wce_crm.db.UTCDateTime(), nullable=True), sa.Column("Metadaten_nutzer", sa.String(length=20), nullable=True), sa.Column("Metadaten_wiedereintrittsdatum", sa.Date(), nullable=True), sa.Column("Arbeitserfahrung", sa.Text(), nullable=True), sa.Column("Grunderfassung_fallnummer", sa.Text(), nullable=True), sa.Column("Grunderfassung_notiz", sa.Text(), nullable=True), sa.Column("HoehereBildung", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_adresse", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_anrede_anschrift", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_email", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_festnetznummer", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_funktion_beziehung", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_mobilfunknummer", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_name", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_name_partner", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_titel", sa.Text(), nullable=True), sa.Column("Kontaktperson__KP_vorname", sa.Text(), nullable=True), sa.Column("Projektrelevanz__relevanz", sa.Text(), nullable=True), sa.Column("Projektrelevanz__foerderperiode", sa.Text(), nullable=True), sa.Column("Schulbildung", sa.Text(), nullable=True), sa.Column("Sprachkenntnisse", sa.Text(), nullable=True), sa.Column("Stammdaten__PLZ", sa.Text(), nullable=True), sa.Column("Stammdaten__anrede_anschrift", sa.Text(), nullable=True), sa.Column("Stammdaten__anzahl_kinder__alter", sa.Text(), nullable=True), sa.Column("Stammdaten__anzahl_kinder__anzahl", sa.Integer(), nullable=True), sa.Column("Stammdaten__aufenthaltsort", sa.Text(), nullable=True), sa.Column("Stammdaten__bundesland", sa.Text(), nullable=True), sa.Column("Stammdaten__land", sa.Text(), nullable=True), sa.Column("Stammdaten__email", sa.Text(), nullable=True), sa.Column("Stammdaten__familienstand", sa.Text(), nullable=True), sa.Column("Stammdaten__festnetznummer", sa.Text(), nullable=True), sa.Column("Stammdaten__geburtsdatum", sa.Date(), nullable=True), sa.Column("Stammdaten__hausnummer", sa.Text(), nullable=True), sa.Column("Stammdaten__herkunftsland", sa.Text(), nullable=True), sa.Column("Stammdaten__mobilfunknummer", sa.Text(), nullable=True), sa.Column("Stammdaten__name", sa.Text(), nullable=True), sa.Column("Stammdaten__ort", sa.Text(), nullable=True), sa.Column("Stammdaten__rueckkehrer", sa.Boolean(), nullable=True), sa.Column("Stammdaten__staatsangehoerigkeit", sa.Text(), nullable=True), sa.Column("Stammdaten__strasse", sa.Text(), nullable=True), sa.Column("Stammdaten__titel", sa.Text(), nullable=True), sa.Column("Stammdaten__vorname", sa.Text(), nullable=True), sa.Column("WeitereInfos__WI_arbeitsstatus", sa.Text(), nullable=True), sa.Column("WeitereInfos__WI_aufenthaltstitel", sa.Text(), nullable=True), sa.Column("WeitereInfos__WI_deutsch_sprache", sa.Text(), nullable=True), sa.Column("WeitereInfos__WI_gueltigkeit_aufenthaltstitel", sa.Date(), nullable=True), sa.Column("WeitereInfos__WI_meldung_institution", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("pers_id"), ) op.create_table( "Unternehmen", sa.Column("un_id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False), sa.Column("geloescht", wce_crm.db.UTCDateTime(), nullable=True), sa.PrimaryKeyConstraint("un_id"), ) 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=False), sa.Column("geloescht", wce_crm.db.UTCDateTime(), nullable=True), sa.ForeignKeyConstraint( ["pers_id"], ["Grunderfassung_Personen.pers_id"], ), sa.ForeignKeyConstraint( ["un_id"], ["Unternehmen.un_id"], ), sa.PrimaryKeyConstraint("vorgang_id"), ) op.create_table( "Personen_Unternehmen_Zuordnung", sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("un_id", sa.Integer(), nullable=False), sa.Column("an_id", sa.Integer(), nullable=False), sa.Column("pers_id", sa.Integer(), nullable=False), sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False), sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=False), sa.Column("geloescht", wce_crm.db.UTCDateTime(), nullable=True), sa.ForeignKeyConstraint( ["pers_id"], ["Grunderfassung_Personen.pers_id"], ), sa.ForeignKeyConstraint( ["un_id"], ["Unternehmen.un_id"], ), sa.PrimaryKeyConstraint("id"), ) with op.batch_alter_table("Personen_Unternehmen_Zuordnung", schema=None) as batch_op: batch_op.create_index( "uq_aktive_zuordnung", ["un_id", "pers_id"], unique=True, sqlite_where=sa.text("geloescht IS NULL"), ) 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=False), sa.Column("geloescht", 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") with op.batch_alter_table("Personen_Unternehmen_Zuordnung", schema=None) as batch_op: batch_op.drop_index("uq_aktive_zuordnung", sqlite_where=sa.text("geloescht IS NULL")) op.drop_table("Personen_Unternehmen_Zuordnung") op.drop_table("Beratung_Vorgang") op.drop_table("Unternehmen") op.drop_table("Grunderfassung_Personen") op.create_table( "beratung_einzelberatung", sa.Column("beratung_id", sa.INTEGER(), nullable=False), sa.Column("vorgang_id", sa.INTEGER(), nullable=False), sa.Column("nutzer_id", sa.INTEGER(), nullable=False), sa.Column("nutzer_name", sa.VARCHAR(length=20), nullable=False), sa.Column("zeitstempel", sa.DATETIME(), 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", sa.DATETIME(), nullable=False), sa.Column("aktualisiert", sa.DATETIME(), nullable=False), sa.Column("geloescht", sa.DATETIME(), nullable=True), sa.ForeignKeyConstraint( ["vorgang_id"], ["beratung_vorgang.vorgang_id"], ), sa.PrimaryKeyConstraint("beratung_id"), ) op.create_table( "zuordnung_personen_unternehmen", sa.Column("id", sa.INTEGER(), nullable=False), sa.Column("un_id", sa.INTEGER(), nullable=False), sa.Column("pers_id", sa.INTEGER(), nullable=False), sa.Column("gueltig_ab", sa.DATETIME(), nullable=False), sa.Column("gueltig_bis", sa.DATETIME(), nullable=True), sa.ForeignKeyConstraint( ["pers_id"], ["grunderfassung_personen.pers_id"], ), sa.ForeignKeyConstraint( ["un_id"], ["grunderfassung_unternehmen.un_id"], ), sa.PrimaryKeyConstraint("id"), ) with op.batch_alter_table("zuordnung_personen_unternehmen", schema=None) as batch_op: batch_op.create_index( batch_op.f("uq_aktive_zuordnung"), ["un_id", "pers_id"], unique=1, sqlite_where=sa.text("gueltig_bis IS NULL"), ) op.create_table( "grunderfassung_unternehmen", sa.Column("un_id", sa.INTEGER(), nullable=False), sa.Column("Metadaten_erstellung", sa.DATETIME(), nullable=True), sa.Column("Metadaten_aktualisierung", sa.DATETIME(), nullable=True), sa.Column("Metadaten_nutzer", sa.VARCHAR(length=20), nullable=True), sa.Column("Grunderfassung_fallnummer", sa.TEXT(), nullable=True), sa.Column("Grunderfassung_notiz", sa.TEXT(), nullable=True), sa.Column("Partnersuche__kanal_aufmerksamkeit", sa.TEXT(), nullable=True), sa.Column("Partnersuche__person_suche", sa.INTEGER(), nullable=True), sa.Column("Partnersuche__un_suche", sa.INTEGER(), nullable=True), sa.Column("geloescht", sa.DATETIME(), nullable=True), sa.PrimaryKeyConstraint("un_id"), ) op.create_table( "beratung_vorgang", sa.Column("vorgang_id", sa.INTEGER(), 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.VARCHAR(length=20), nullable=False), sa.Column("erstellt", sa.DATETIME(), nullable=False), sa.Column("aktualisiert", sa.DATETIME(), nullable=False), sa.Column("geloescht", sa.DATETIME(), 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( "grunderfassung_personen", sa.Column("pers_id", sa.INTEGER(), nullable=False), sa.Column("Metadaten_erstellung", sa.DATETIME(), nullable=True), sa.Column("Metadaten_aktualisierung", sa.DATETIME(), nullable=True), sa.Column("Metadaten_nutzer", sa.VARCHAR(length=20), nullable=True), sa.Column("Metadaten_wiedereintrittsdatum", sa.DATE(), nullable=True), sa.Column("Arbeitserfahrung", sa.TEXT(), nullable=True), sa.Column("Grunderfassung_fallnummer", sa.TEXT(), nullable=True), sa.Column("Grunderfassung_notiz", sa.TEXT(), nullable=True), sa.Column("HoehereBildung", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_adresse", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_anrede_anschrift", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_email", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_festnetznummer", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_funktion_beziehung", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_mobilfunknummer", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_name", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_name_partner", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_titel", sa.TEXT(), nullable=True), sa.Column("Kontaktperson__KP_vorname", sa.TEXT(), nullable=True), sa.Column("Projektrelevanz__relevanz", sa.TEXT(), nullable=True), sa.Column("Projektrelevanz__foerderperiode", sa.TEXT(), nullable=True), sa.Column("Schulbildung", sa.TEXT(), nullable=True), sa.Column("Sprachkenntnisse", sa.TEXT(), nullable=True), sa.Column("Stammdaten__PLZ", sa.TEXT(), nullable=True), sa.Column("Stammdaten__anrede_anschrift", sa.TEXT(), nullable=True), sa.Column("Stammdaten__anzahl_kinder__alter", sa.TEXT(), nullable=True), sa.Column("Stammdaten__anzahl_kinder__anzahl", sa.INTEGER(), nullable=True), sa.Column("Stammdaten__aufenthaltsort", sa.TEXT(), nullable=True), sa.Column("Stammdaten__bundesland", sa.TEXT(), nullable=True), sa.Column("Stammdaten__land", sa.TEXT(), nullable=True), sa.Column("Stammdaten__email", sa.TEXT(), nullable=True), sa.Column("Stammdaten__familienstand", sa.TEXT(), nullable=True), sa.Column("Stammdaten__festnetznummer", sa.TEXT(), nullable=True), sa.Column("Stammdaten__geburtsdatum", sa.DATE(), nullable=True), sa.Column("Stammdaten__hausnummer", sa.TEXT(), nullable=True), sa.Column("Stammdaten__herkunftsland", sa.TEXT(), nullable=True), sa.Column("Stammdaten__mobilfunknummer", sa.TEXT(), nullable=True), sa.Column("Stammdaten__name", sa.TEXT(), nullable=True), sa.Column("Stammdaten__ort", sa.TEXT(), nullable=True), sa.Column("Stammdaten__rueckkehrer", sa.BOOLEAN(), nullable=True), sa.Column("Stammdaten__staatsangehoerigkeit", sa.TEXT(), nullable=True), sa.Column("Stammdaten__strasse", sa.TEXT(), nullable=True), sa.Column("Stammdaten__titel", sa.TEXT(), nullable=True), sa.Column("Stammdaten__vorname", sa.TEXT(), nullable=True), sa.Column("WeitereInfos__WI_arbeitsstatus", sa.TEXT(), nullable=True), sa.Column("WeitereInfos__WI_aufenthaltstitel", sa.TEXT(), nullable=True), sa.Column("WeitereInfos__WI_deutsch_sprache", sa.TEXT(), nullable=True), sa.Column("WeitereInfos__WI_gueltigkeit_aufenthaltstitel", sa.DATE(), nullable=True), sa.Column("WeitereInfos__WI_meldung_institution", sa.TEXT(), nullable=True), sa.Column("geloescht", sa.DATETIME(), nullable=True), sa.PrimaryKeyConstraint("pers_id"), ) # ### end Alembic commands ###