generated from dopt-python/py311
basic database interaction
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TypedDict, cast
|
||||
from typing import Any, TypedDict, cast
|
||||
|
||||
import polars as pl
|
||||
|
||||
@@ -80,7 +80,7 @@ def _transform_for_gui_output(
|
||||
|
||||
def comp_search_choices() -> tuple[tuple[str, int], ...]:
|
||||
# TODO no reload functionality
|
||||
q = db.df_crm_master.lazy()
|
||||
q = db.DF_CRM_MASTER.lazy()
|
||||
counter = pl.int_range(0, pl.len()).over(pl.col.ma_unternehmensname)
|
||||
q = q.with_columns(
|
||||
dedupl=pl.when(counter == 0)
|
||||
@@ -89,14 +89,13 @@ def comp_search_choices() -> tuple[tuple[str, int], ...]:
|
||||
)
|
||||
df = q.collect()
|
||||
|
||||
# return dict(zip(df["dedupl"], df["ma_id"]))
|
||||
return tuple(zip(df["dedupl"], df["ma_id"]))
|
||||
|
||||
|
||||
def comp_search_get_info(
|
||||
ma_id: int,
|
||||
) -> CompanyInfo:
|
||||
df = db.df_crm_master.filter(pl.col.ma_id == ma_id)
|
||||
df = db.DF_CRM_MASTER.filter(pl.col.ma_id == ma_id)
|
||||
if df.height > 1 or df.height == 0:
|
||||
raise ValueError(f"Größe des zurückgelieferten Datenpakets ungültig: {df.height}")
|
||||
|
||||
@@ -109,7 +108,7 @@ def contact_person_search_choices(
|
||||
use_both_names: bool,
|
||||
) -> tuple[tuple[str, int], ...]:
|
||||
# TODO no reload functionality
|
||||
q = db.df_contact_person.lazy()
|
||||
q = db.DF_CONTACT_PERSON.lazy()
|
||||
if ma_id is not None:
|
||||
q = q.filter(pl.col.ma_id == ma_id)
|
||||
|
||||
@@ -128,16 +127,52 @@ def contact_person_search_choices(
|
||||
)
|
||||
df = q.collect()
|
||||
|
||||
# return dict(zip(df["dedupl"], df["an_id"]))
|
||||
return tuple(zip(df["dedupl"], df["an_id"]))
|
||||
|
||||
|
||||
def contact_person_search_get_info(
|
||||
an_id: int,
|
||||
) -> ContactPersonInfo:
|
||||
df = db.df_contact_person.filter(pl.col.an_id == an_id)
|
||||
df = db.DF_CONTACT_PERSON.filter(pl.col.an_id == an_id)
|
||||
if df.height > 1 or df.height == 0:
|
||||
raise ValueError(f"Größe des zurückgelieferten Datenpakets ungültig: {df.height}")
|
||||
|
||||
df = _transform_for_gui_output(df)
|
||||
return cast(ContactPersonInfo, df.row(0, named=True))
|
||||
|
||||
|
||||
def insert_initial_recording(
|
||||
data: dict[str, Any],
|
||||
) -> None:
|
||||
stmt = db.grunderfassung_unternehmen.insert().values(data)
|
||||
with db.ENGINE.begin() as conn:
|
||||
conn.execute(stmt)
|
||||
|
||||
|
||||
def update_initial_recording(
|
||||
erfassung_id: int,
|
||||
data: dict[str, Any],
|
||||
) -> None:
|
||||
stmt = (
|
||||
db.grunderfassung_unternehmen.update()
|
||||
.where(db.grunderfassung_unternehmen.c.erfassung_id == erfassung_id)
|
||||
.values(data)
|
||||
)
|
||||
with db.ENGINE.begin() as conn:
|
||||
conn.execute(stmt)
|
||||
|
||||
|
||||
def get_initial_recording(
|
||||
erfassung_id: int,
|
||||
) -> dict[str, Any]:
|
||||
stmt = db.grunderfassung_unternehmen.select().where(
|
||||
db.grunderfassung_unternehmen.c.erfassung_id == erfassung_id
|
||||
)
|
||||
with db.ENGINE.begin() as conn:
|
||||
ret = conn.execute(stmt)
|
||||
|
||||
row = ret.fetchone()
|
||||
if row is None:
|
||||
raise KeyError(f"Database ID {erfassung_id} not found")
|
||||
|
||||
return row._asdict()
|
||||
|
||||
Reference in New Issue
Block a user