import polars as pl import sqlalchemy as sql from sqlalchemy import Column, Table from umbreit.types import PolarsNullValues, PolarsSchema metadata = sql.MetaData() ext_bedpbed = Table( "ext_bedpbed", metadata, Column("BEDARFNR", sql.Integer, primary_key=True, autoincrement=False, nullable=False), Column( "BEDP_SEQUENZ", sql.Integer, primary_key=True, autoincrement=False, nullable=False ), Column("BEDP_TITELNR", sql.Integer, nullable=False), Column("BEDP_MAN", sql.Integer, nullable=False), Column("VERLAGSNR", sql.Integer, nullable=False), Column("PRODUKT_GR", sql.Integer, nullable=True), Column("BEARBEITER", sql.String(10), nullable=False), Column("BEDP_MENGE_BEDARF", sql.Integer, nullable=True), Column("BEDP_MENGE_VERKAUF", sql.Integer, nullable=True), Column("BEDP_MENGE_ANFRAGE", sql.Integer, nullable=True), Column("BEDP_MENGE_BESTELLUNG", sql.Integer, nullable=True), Column("BEDP_MENGE_FREI", sql.Integer, nullable=True), Column("BEDP_MENGE_BEDARF_VM", sql.Integer, nullable=True), Column("BEDP_BESTELLWEG", sql.String(2), nullable=True), Column("BEDP_DATUM_LIEFERUNG", sql.Date, nullable=True), ) ext_bedpbed_schema_map: PolarsSchema = { "BEDARFNR": pl.UInt32, "BEDP_SEQUENZ": pl.UInt32, "BEDP_TITELNR": pl.UInt32, "BEDP_MAN": pl.UInt8, "VERLAGSNR": pl.UInt32, "PRODUKT_GR": pl.UInt8, "BEARBEITER": pl.String, "BEDP_MENGE_BEDARF": pl.UInt32, "BEDP_MENGE_VERKAUF": pl.UInt32, "BEDP_MENGE_ANFRAGE": pl.UInt32, "BEDP_MENGE_BESTELLUNG": pl.UInt32, "BEDP_MENGE_FREI": pl.UInt32, "BEDP_MENGE_BEDARF_VM": pl.UInt32, "BEDP_BESTELLWEG": pl.String, "BEDP_DATUM_LIEFERUNG": pl.Date, } ext_bedpbed_null_values: PolarsNullValues = { "BEDP_MENGE_BEDARF": "-1", } ext_titel_info = Table( "ext_titel_info", metadata, Column("TI_NUMMER", sql.Integer, primary_key=True, autoincrement=False, nullable=False), Column("MANDFUEHR", sql.Integer, primary_key=True, autoincrement=False, nullable=False), Column("TI_KURZTEXT", sql.String(225), nullable=False), Column("VERLAGSNR", sql.Integer, nullable=False), Column("VERLAG_SUCHBEGRIFF", sql.String(225), nullable=False), Column("MELDENUMMER", sql.Integer, nullable=False), Column("DATUM_LIEFERBAR", sql.DateTime, nullable=False), Column("MENGE_VORMERKER", sql.Integer, nullable=True), Column("PRODUKTGRUPPE", sql.Integer, nullable=False), Column("PRODUKTGRUPPE_TYP", sql.String(3), nullable=False), Column("EINKAEUFER", sql.String(10), nullable=False), Column("BESTAND_VERFUEGBAR", sql.Integer, nullable=False), ) ext_titel_info_schema_map: PolarsSchema = { "TI_NUMMER": pl.UInt32, "MANDFUEHR": pl.UInt8, "TI_KURZTEXT": pl.String, "VERLAGSNR": pl.UInt32, "VERLAG_SUCHBEGRIFF": pl.String, "MELDENUMMER": pl.UInt8, "DATUM_LIEFERBAR": pl.Datetime, "MENGE_VORMERKER": pl.UInt32, "PRODUKTGRUPPE": pl.UInt16, "PRODUKTGRUPPE_TYP": pl.String, "EINKAEUFER": pl.String, "BESTAND_VERFUEGBAR": pl.UInt64, } ext_titel_info_null_values: PolarsNullValues = {} EXT_BESPBES_INFO = Table( "EXT_BESPBES_INFO", metadata, Column("BES_DATUM", sql.Date, nullable=False), Column("BESP_DAT_ERW", sql.Date, nullable=False), Column("BESP_MENGE", sql.Integer, nullable=False), Column("BESP_STATUS", sql.Integer, nullable=False), Column("BESP_GRUND", sql.String(2), nullable=True), Column("BESP_MAND", sql.Integer, nullable=False), Column("BESP_TITELNR", sql.Integer, nullable=False), Column("BESPAA", sql.String(1), nullable=True), Column("BESP_ART", sql.String(1), nullable=True), Column("BESVAK999", sql.String(1), nullable=True), ) EXT_BESPBES_INFO_schema_map: PolarsSchema = { "BES_DATUM": pl.Date, "BESP_DAT_ERW": pl.Date, "BESP_MENGE": pl.UInt32, "BESP_STATUS": pl.UInt8, "BESP_GRUND": pl.String, "BESP_MAND": pl.UInt8, "BESP_TITELNR": pl.UInt32, "BESPAA": pl.String, "BESP_ART": pl.String, "BESVAK999": pl.String, } EXT_BESPBES_INFO_null_values: PolarsNullValues = {} EXT_AUFPAUF = Table( "EXT_AUFPAUF", metadata, Column("TITELNR", sql.Integer, nullable=False), Column("AUFTRAGSNUMMER", sql.Integer, nullable=False), Column("AUFTRAGS_DATUM", sql.DateTime, nullable=False), Column("AUFTRAGS_ART", sql.Integer, nullable=False), Column("EINGANGS_ART", sql.String(2), nullable=False), Column("DATUM_LIEFERUNG", sql.DateTime, nullable=True), Column("AUFTRAGS_STATUS", sql.String(1), nullable=False), Column("KUNDE_LIEFERUNG", sql.Integer, nullable=False), Column("KUNDE_RECHNUNG", sql.Integer, nullable=False), Column("MANDANT", sql.Integer, nullable=False), Column("AUFP_POSITION", sql.Integer, nullable=False), Column("AUFP_MENGE_AUFTRAG", sql.Integer, nullable=False), Column("AUFP_MENGE_GELIEFERT", sql.Integer, nullable=False), Column("AUFP_VORMERKUNG", sql.String(1), nullable=True), Column("AUFP_DATUM_ANLAGE", sql.DateTime, nullable=False), ) EXT_AUFPAUF_schema_map: PolarsSchema = { "TITELNR": pl.UInt32, "AUFTRAGSNUMMER": pl.UInt32, "AUFTRAGS_DATUM": pl.Datetime, "AUFTRAGS_ART": pl.UInt8, "DATUM_LIEFERUNG": pl.Date, "AUFTRAGS_STATUS": pl.String, "KUNDE_LIEFERUNG": pl.UInt32, "KUNDE_RECHNUNG": pl.UInt32, "MANDANT": pl.UInt8, "AUFP_POSITION": pl.UInt16, "AUFP_MENGE_AUFTRAG": pl.UInt32, "AUFP_MENGE_GELIEFERT": pl.UInt32, "AUFP_VORMERKUNG": pl.String, "AUFP_DATUM_ANLAGE": pl.Datetime, } EXT_AUFPAUF_null_values: PolarsNullValues = {} csv_tables: tuple[tuple[Table, PolarsSchema, PolarsNullValues], ...] = ( (ext_bedpbed, ext_bedpbed_schema_map, ext_bedpbed_null_values), (ext_titel_info, ext_titel_info_schema_map, ext_titel_info_null_values), (EXT_AUFPAUF, EXT_AUFPAUF_schema_map, EXT_AUFPAUF_null_values), (EXT_BESPBES_INFO, EXT_BESPBES_INFO_schema_map, EXT_BESPBES_INFO_null_values), ) results = Table( "results", metadata, Column("id", sql.Integer, nullable=False, primary_key=True, autoincrement=True), Column("bedarf_nr", sql.Integer, nullable=False), Column("bedarf_sequenz", sql.Integer, nullable=False), Column("vorlage", sql.Boolean, nullable=False), Column("wf_id", sql.Integer, nullable=False), Column("best_menge", sql.Integer, nullable=True), Column("freigabe_auto", sql.Boolean, nullable=False), ) results_schema_map: PolarsSchema = { "id": pl.UInt32, "bedarf_nr": pl.UInt32, "bedarf_sequenz": pl.UInt32, "vorlage": pl.Boolean, "wf_id": pl.UInt16, "best_menge": pl.UInt32, "freigabe_auto": pl.Boolean, } map_to_result: dict[str, str] = { "BEDARFNR": "bedarf_nr", "BEDP_SEQUENZ": "bedarf_sequenz", } raw_data_query_schema_map: PolarsSchema = { "BEDARFNR": pl.UInt32, "BEDP_SEQUENZ": pl.UInt32, "BEDP_TITELNR": pl.UInt32, "BEDP_MAN": pl.UInt8, "BEDP_MENGE_BEDARF_VM": pl.UInt32, "MELDENUMMER": pl.UInt8, "MENGE_VORMERKER": pl.UInt32, }