switch to new data model with distinct company and person data

This commit is contained in:
2026-06-26 14:14:45 +02:00
parent b9427bc756
commit df93914942
9 changed files with 436 additions and 265 deletions
+84 -15
View File
@@ -154,11 +154,11 @@ def initrec_comp_contact_person_search_get_info(
# // internals
def initrec_insert_initial_recording(
def initrec_company_insert_initial_recording(
data: dict[str, Any],
) -> InitRecId:
logger.debug("[Call backend] insert_initial_recording")
stmt = db.grunderfassung.insert()
stmt = db.grunderfassung_unternehmen.insert()
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt, data)
@@ -171,21 +171,25 @@ def initrec_insert_initial_recording(
return prim_keys[0]
def initrec_update_initial_recording(
def initrec_company_update_initial_recording(
id_: InitRecId,
data: dict[str, Any],
) -> None:
logger.debug("[Call backend] update_initial_recording")
stmt = db.grunderfassung.update().where(db.grunderfassung.c.erfassung_id == id_)
stmt = db.grunderfassung_unternehmen.update().where(
db.grunderfassung_unternehmen.c.un_id == id_
)
with db.ENGINE.begin() as conn:
conn.execute(stmt, data)
def initrec_get_initial_recording(
def initrec_company_get_initial_recording(
id_: InitRecId,
) -> dict[str, Any]:
logger.debug("[Call backend] get_initial_recording")
stmt = db.grunderfassung.select().where(db.grunderfassung.c.erfassung_id == id_)
stmt = db.grunderfassung_unternehmen.select().where(
db.grunderfassung_unternehmen.c.un_id == id_
)
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt)
@@ -198,11 +202,75 @@ def initrec_get_initial_recording(
return row._asdict()
def initrec_delete_initial_recording(
def initrec_company_delete_initial_recording(
id_: InitRecId,
) -> None:
logger.debug("[Call backend] delete_initial_recording")
stmt = db.grunderfassung.delete().where(db.grunderfassung.c.erfassung_id == id_)
stmt = db.grunderfassung_unternehmen.delete().where(
db.grunderfassung_unternehmen.c.un_id == id_
)
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt)
if ret.rowcount == 0:
raise KeyError(f"Database ID {id_} not found for deletion")
def initrec_person_insert_initial_recording(
data: dict[str, Any],
) -> InitRecId:
logger.debug("[Call backend] insert_initial_recording")
stmt = db.grunderfassung_personen.insert()
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt, data)
if ret.rowcount == 0:
raise IOError("Entry was not inserted correctly")
prim_keys = ret.inserted_primary_key
assert prim_keys
return prim_keys[0]
def initrec_person_update_initial_recording(
id_: InitRecId,
data: dict[str, Any],
) -> None:
logger.debug("[Call backend] update_initial_recording")
stmt = db.grunderfassung_personen.update().where(
db.grunderfassung_personen.c.pers_id == id_
)
with db.ENGINE.begin() as conn:
conn.execute(stmt, data)
def initrec_person_get_initial_recording(
id_: InitRecId,
) -> dict[str, Any]:
logger.debug("[Call backend] get_initial_recording")
stmt = db.grunderfassung_personen.select().where(
db.grunderfassung_personen.c.pers_id == id_
)
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt)
if ret.rowcount == 0:
raise KeyError(f"Database ID {id_} not found")
row = ret.fetchone()
assert row, "row was not obtained"
return row._asdict()
def initrec_person_delete_initial_recording(
id_: InitRecId,
) -> None:
logger.debug("[Call backend] delete_initial_recording")
stmt = db.grunderfassung_personen.delete().where(
db.grunderfassung_personen.c.pers_id == id_
)
with db.ENGINE.begin() as conn:
ret = conn.execute(stmt)
@@ -218,15 +286,16 @@ class FrontpageCompany:
is_company: bool
# TODO separate functions for companies and person: focus on companies first
def front_get_company_list() -> list[FrontpageCompany]:
logger.debug("[Call backend] get_company_list")
stmt = sql.select(
db.grunderfassung.c.erfassung_id,
db.grunderfassung.c.Partnersuche__un_suche,
db.grunderfassung.c.Stammdaten__vorname,
db.grunderfassung.c.Stammdaten__name,
db.grunderfassung.c.Metadaten_aktualisierung,
).order_by(db.grunderfassung.c.Metadaten_aktualisierung.desc())
db.grunderfassung_unternehmen.c.un_id,
db.grunderfassung_unternehmen.c.Partnersuche__un_suche,
# db.grunderfassung_unternehmen.c.Stammdaten__vorname,
# db.grunderfassung_unternehmen.c.Stammdaten__name,
db.grunderfassung_unternehmen.c.Metadaten_aktualisierung,
).order_by(db.grunderfassung_unternehmen.c.Metadaten_aktualisierung.desc())
with db.ENGINE.connect() as conn:
res = conn.execute(stmt)
@@ -234,7 +303,7 @@ def front_get_company_list() -> list[FrontpageCompany]:
front_page_companies: list[FrontpageCompany] = []
for entry in res.mappings():
erfassung_id = entry["erfassung_id"]
erfassung_id = entry["un_id"]
ma_id = entry["Partnersuche__un_suche"]
datetime_akt = cast(datetime.datetime, entry["Metadaten_aktualisierung"])
datetime_akt = datetime_akt.astimezone()