Konzept für Auswerten der SQL-Daten aus FN, parsen und schreiben der Pojekt-Datei
This commit is contained in:
+12
-4
@@ -133,21 +133,29 @@ class AppSettings(BaseSettings):
|
||||
app_settings = AppSettings()
|
||||
|
||||
|
||||
class Xml(BaseModel):
|
||||
xml: Path
|
||||
|
||||
|
||||
class XslFile(BaseModel):
|
||||
id: tuple
|
||||
bez: str
|
||||
xsl_file: Path
|
||||
|
||||
xmls: list[Xml] = []
|
||||
|
||||
|
||||
class TreeNode(BaseModel):
|
||||
id: tuple
|
||||
bez: str
|
||||
children: set["TreeNode|XslFile"]
|
||||
children: list["TreeNode|XslFile"]
|
||||
|
||||
|
||||
class PdfProjectSettings(BaseSettings):
|
||||
class PdfProjectSettings(BaseModel):
|
||||
"""
|
||||
Speichert Projekt-Einstellungen direkt im Ordner des Projekts in einer Klartextdatei JSON
|
||||
"""
|
||||
|
||||
pass
|
||||
nodes: list[TreeNode] = []
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
from conf import TreeNode, XslFile, PdfProjectSettings, Xml
|
||||
from pathlib import Path
|
||||
|
||||
from pydantic_yaml import to_yaml_str, parse_yaml_file_as
|
||||
import polars as pl
|
||||
import time
|
||||
|
||||
|
||||
# Lade Beispieldaten
|
||||
start_time = time.time()
|
||||
df = pl.read_csv("src/ui/res/data.csv")
|
||||
load_csv_time = time.time() - start_time
|
||||
print(f"Performance: csv in {load_csv_time:.3f}s")
|
||||
|
||||
|
||||
start_time = time.time()
|
||||
ebene_1 = df.group_by(["reporttyp", "reporttyp_bez"]).len()
|
||||
ebene_2 = df.group_by(["reporttyp", "report", "report_bez"]).len()
|
||||
ebene_3 = df.group_by(["reporttyp", "report", "repfile", "repfile_bez", "xsl_datei"]).len()
|
||||
group_time = time.time() - start_time
|
||||
print(f"Performance: group in {group_time:.3f}s")
|
||||
|
||||
project = PdfProjectSettings()
|
||||
|
||||
start_time = time.time()
|
||||
for r1 in ebene_1.rows(named=True):
|
||||
tn_1 = TreeNode(id=(r1["reporttyp"],), bez=r1["reporttyp_bez"], children=[])
|
||||
r1_children = ebene_2.filter(pl.col("reporttyp") == r1["reporttyp"])
|
||||
|
||||
for r2 in r1_children.rows(named=True):
|
||||
tn_2 = TreeNode(id=(r2["reporttyp"], r2["report"]), bez=r2["report_bez"], children=[])
|
||||
r2_children = ebene_3.filter((pl.col("reporttyp") == r1["reporttyp"]) & (pl.col("report") == r2["report"]))
|
||||
|
||||
for r3 in r2_children.rows(named=True):
|
||||
x = XslFile(
|
||||
id=(r3["reporttyp"], r3["report"], r3["repfile"]),
|
||||
bez=r3["repfile_bez"],
|
||||
xsl_file=Path(r3["xsl_datei"]),
|
||||
xmls=[Xml(xml=Path("test.xml"))],
|
||||
)
|
||||
|
||||
tn_2.children.append(x)
|
||||
tn_1.children.append(tn_2)
|
||||
project.nodes.append(tn_1)
|
||||
nodes_time = time.time() - start_time
|
||||
print(f"Performance: nodes_time in {nodes_time:.3f}s")
|
||||
|
||||
start_time = time.time()
|
||||
with open("project.yaml", "w", encoding="utf8") as f:
|
||||
f.write(to_yaml_str(project))
|
||||
dump_time = time.time() - start_time
|
||||
print(f"Performance: dump_time to file in {dump_time:.3f}s")
|
||||
|
||||
start_time = time.time()
|
||||
project_2 = parse_yaml_file_as(PdfProjectSettings, "project.yaml")
|
||||
parse_yaml_file_time = time.time() - start_time
|
||||
print(f"Performance: parse_yaml_file in {parse_yaml_file_time:.3f}s")
|
||||
Reference in New Issue
Block a user