generated from dopt-python/py311
prepare backend interaction scheme
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
from pprint import pformat
|
||||
from typing import TYPE_CHECKING, Any, cast
|
||||
|
||||
import polars as pl
|
||||
@@ -8,11 +9,12 @@ import sqlalchemy as sql
|
||||
|
||||
from wce_crm import db
|
||||
from wce_crm.constants import TIMEZONE_CEST
|
||||
from wce_crm.data_models import Beratungsgespraech_Vorgang
|
||||
from wce_crm.logging import logger_back as logger
|
||||
from wce_crm.types import CompanyInfo, ContactPersonInfo, InitRecType, MainPageEntry
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from wce_crm.types import ExtAnId, ExtMaId, RecId
|
||||
from wce_crm.types import ConsId, ExtAnId, ExtMaId, RecId
|
||||
|
||||
|
||||
def _transform_for_gui_output(
|
||||
@@ -226,6 +228,52 @@ def initrec_person_delete_initial_recording(
|
||||
raise KeyError(f"Database ID {id_} not found for deletion")
|
||||
|
||||
|
||||
def page_consulting_to_db(
|
||||
data: Beratungsgespraech_Vorgang,
|
||||
) -> None:
|
||||
logger.debug("[Consulting Page] Call Database Routine...")
|
||||
fk_vorgang_id: int
|
||||
if data.vorgang_id is None:
|
||||
# insert new "Vorgang"
|
||||
insert_data = data.model_dump(exclude={"vorgang_id", "beratungen"})
|
||||
logger.debug("[Consulting Page] Call insert with data:\n%s", pformat(insert_data))
|
||||
fk_vorgang_id = 42 # TODO replace for real inserted PK
|
||||
else:
|
||||
fk_vorgang_id = data.vorgang_id
|
||||
logger.debug("[Consulting Page] VorgangID already set. ID: %d", fk_vorgang_id)
|
||||
|
||||
rows_for_db_insert: list[dict[str, Any]] = []
|
||||
rows_for_db_update: list[dict[str, Any]] = []
|
||||
|
||||
for cons_session in data.beratungen:
|
||||
cons_session.vorgang_id = fk_vorgang_id
|
||||
if cons_session.beratung_id is None:
|
||||
row_data = cons_session.model_dump(exclude={"beratung_id"})
|
||||
rows_for_db_insert.append(row_data)
|
||||
else:
|
||||
row_data = cons_session.model_dump()
|
||||
rows_for_db_update.append(row_data)
|
||||
|
||||
if rows_for_db_update:
|
||||
# ... update
|
||||
logger.debug(
|
||||
"[Consulting Page] Call update for sessions:\n%s", pformat(rows_for_db_update)
|
||||
)
|
||||
if rows_for_db_insert:
|
||||
# ... insert
|
||||
logger.debug(
|
||||
"[Consulting Page] Call insert for sessions:\n%s", pformat(rows_for_db_insert)
|
||||
)
|
||||
|
||||
|
||||
def page_consulting_from_db(
|
||||
cons_id: ConsId,
|
||||
) -> Beratungsgespraech_Vorgang:
|
||||
# TODO add Routine
|
||||
# get "Vorgang" and all associated sessions to instantiate Pydantic data model
|
||||
...
|
||||
|
||||
|
||||
# // main page interaction
|
||||
def _main_page_get_company_list() -> list[MainPageEntry]:
|
||||
logger.debug("[Call backend] get_company_list")
|
||||
|
||||
Reference in New Issue
Block a user