Initial Translation

This commit is contained in:
Moritz Utcke
2025-04-21 12:58:39 -03:00
parent 6388669d66
commit 079d913451
12 changed files with 266 additions and 44 deletions

18
.env
View File

@@ -1,16 +1,2 @@
# Environment variables declared in this file are automatically made available to Prisma.
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
POSTGRES_DB=main
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=main
POSTGRES_PASSWORD=hHMP8cd^N3SnzGRR
DB_CONTAINER_NAME=database
POSTGRES_DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
POSTGRES_DATABASE_URL_EXTERNAL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_CONTAINER_NAME}:${POSTGRES_PORT}/${POSTGRES_DB}"
DB_USER=main
DB_PASSWORD=hHMP8cd^N3SnzGRR

View File

@@ -1,16 +0,0 @@
FROM postgres:latest
ENV POSTGRES_USER ${POSTGRES_USER}
ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD}
ENV POSTGRES_DB ${POSTGRES_DB}
COPY ./prisma/migrations/ /docker-entrypoint-initdb.d/
EXPOSE 5432
# Use a loop to copy migration.sql from each folder to the corresponding directory in the build context
RUN for folder in /docker-entrypoint-initdb.d/*; do \
if [ -d "$folder" ]; then \
cp "$folder/migration.sql" "$folder.sql"; \
rm -rf "$folder"; \
fi \
done

View File

@@ -1,8 +1,16 @@
version: '3'
services:
database:
build: ./
surrealdb:
env_file:
- .env
entrypoint:
- /surreal
- start
- --user
- $DB_USER
- --pass
- $DB_PASSWORD
image: surrealdb/surrealdb:latest
ports:
- 5432:5432
- 8000:8000

View File

@@ -5,35 +5,35 @@ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"unterlage": await import("../src/pages/api/unterlage.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
"geg-nachweis-gewerbe/[id]": await import("../src/pages/api/geg-nachweis-gewerbe/[id].ts"),
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
"objekt": await import("../src/pages/api/objekt/index.ts"),
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"),
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
"user": await import("../src/pages/api/user/index.ts"),
"user/self": await import("../src/pages/api/user/self.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),

4
surreal/Anteilshaber.sql Normal file
View File

@@ -0,0 +1,4 @@
DEFINE TABLE Anteilshaber TYPE RELATION IN Benutzer OUT VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen | BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe SCHEMAFULL PERMISSIONS NONE;
DEFINE FIELD rolle ON TABLE Anteilshaber
TYPE 'Besteller' | 'Aussteller' | 'Zuarbeiter' | 'Interessierter';

109
surreal/Aufnahme.sql Normal file
View File

@@ -0,0 +1,109 @@
DEFINE TABLE Aufnahme SCHEMAFULL;
DEFINE FIELD benutzer ON TABLE Aufnahme TYPE record<Benutzer>;
-- @zod.describe("Art des Gebäudes und seiner primären Nutzungsart")
DEFINE FIELD gebaeudetyp ON TABLE Aufnahme TYPE string;
-- @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")
DEFINE FIELD gebaeudeteil ON TABLE Aufnahme TYPE string;
-- @zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde")
DEFINE FIELD baujahr_gebaeude ON TABLE Aufnahme TYPE array<int>;
-- @zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde")
DEFINE FIELD baujahr_heizung ON TABLE Aufnahme TYPE array<int>;
-- @zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde")
DEFINE FIELD baujahr_klima ON TABLE Aufnahme TYPE array<int>;
-- @zod.describe("Anzahl der (Wohn)Einheiten im Gebäude")
DEFINE FIELD einheiten ON TABLE Aufnahme TYPE option<int>;
-- @zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden")
DEFINE FIELD flaeche ON TABLE Aufnahme TYPE option<int>;
-- @zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche")
DEFINE FIELD nutzflaeche ON TABLE Aufnahme TYPE option<int>;
-- @zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen")
DEFINE FIELD saniert ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist")
DEFINE FIELD keller ON TABLE Aufnahme TYPE "BEHEIZT" | "UNBEHEIZT" | "NICHT_VORHANDEN";
-- @zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist")
DEFINE FIELD dachgeschoss ON TABLE Aufnahme TYPE "BEHEIZT" | "UNBEHEIZT" | "NICHT_VORHANDEN";
-- @zod.describe("Art der Gebäudelüftung")
DEFINE FIELD lueftung ON TABLE Aufnahme TYPE "Fensterlueftung" | "Schachtlueftung" | "LueftungsanlageMitWaermerueckgewinnung" | "LueftungsanlageOhneWaermerueckgewinnung";
-- @zod.describe("Art der Gebäudekühlung")
DEFINE FIELD kuehlung ON TABLE Aufnahme TYPE option<string>;
-- @zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr")
DEFINE FIELD leerstand ON TABLE Aufnahme TYPE option<int>;
-- @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
DEFINE FIELD alternative_heizung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
DEFINE FIELD alternative_warmwasser ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
DEFINE FIELD alternative_lueftung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
DEFINE FIELD alternative_kuehlung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Datum an dem der Kunde die Aufnahme erstellt hat")
DEFINE FIELD erstellungsdatum ON TABLE Aufnahme TYPE datetime DEFAULT time::now();
-- @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD zentralheizung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD solarsystem_warmwasser ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD warmwasser_rohre_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD niedertemperatur_kessel ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD brennwert_kessel ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD heizungsrohre_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
DEFINE FIELD standard_kessel ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD waermepumpe ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD raum_temperatur_regler ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD photovoltaik ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD durchlauf_erhitzer ON TABLE Aufnahme TYPE option<bool>;
DEFINE FIELD einzelofen ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD zirkulation ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD einfach_verglasung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD dreifach_verglasung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen")
DEFINE FIELD fenster_teilweise_undicht ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD doppel_verglasung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
DEFINE FIELD fenster_dicht ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen")
DEFINE FIELD rolllaeden_kaesten_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen")
DEFINE FIELD isolier_verglasung ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen")
DEFINE FIELD tueren_undicht ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
DEFINE FIELD tueren_dicht ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
DEFINE FIELD dachgeschoss_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
DEFINE FIELD keller_decke_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD keller_wand_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD aussenwand_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
DEFINE FIELD oberste_geschossdecke_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen")
DEFINE FIELD aussenwand_min_12cm_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
DEFINE FIELD dachgeschoss_min_12cm_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
-- @zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
DEFINE FIELD oberste_geschossdecke_min_12cm_gedaemmt ON TABLE Aufnahme TYPE option<bool>;
DEFINE FIELD events ON TABLE Aufnahme TYPE array<record<Event>>;
DEFINE FIELD bilder ON TABLE Aufnahme TYPE array<record<Bild>>;
DEFINE FIELD unterlagen ON TABLE Aufnahme TYPE array<record<Unterlage>>;

22
surreal/Benutzer.sql Normal file
View File

@@ -0,0 +1,22 @@
DEFINE TABLE Benutzer SCHEMAFULL;
DEFINE FIELD id ON TABLE Benutzer TYPE string;
DEFINE FIELD alte_id ON TABLE Benutzer TYPE int;
DEFINE FIELD name ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD vorname ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD email ON TABLE Benutzer TYPE string;
DEFINE FIELD passwort ON TABLE Benutzer TYPE string;
DEFINE FIELD profilbild ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD plz ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD ort ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD adresse ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD telefon ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD anrede ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD rolle ON TABLE Benutzer TYPE "USER" | "ADMIN";
DEFINE FIELD firma ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD lex_office_id ON TABLE Benutzer TYPE option<string>;
DEFINE FIELD verified ON TABLE Benutzer TYPE bool DEFAULT false;
DEFINE FIELD created_at ON TABLE Benutzer TYPE datetime DEFAULT time::now();
DEFINE FIELD updated_at ON TABLE Benutzer TYPE datetime DEFAULT time::now();

10
surreal/Bild.sql Normal file
View File

@@ -0,0 +1,10 @@
DEFINE TABLE Bild SCHEMAFULL;
DEFINE FIELD name ON TABLE Bild TYPE string;
DEFINE FIELD mime ON TABLE Bild TYPE string;
DEFINE FIELD kategorie ON TABLE Bild TYPE "Heizung" | "Fenster" | "Gebaeude" | "Daemmung" | "AnlagenTechnik";
DEFINE FIELD created_at ON TABLE Bild TYPE datetime DEFAULT time::now();
DEFINE FIELD updated_at ON TABLE Bild TYPE datetime VALUE time::now();
DEFINE FIELD aufnahme ON TABLE Bild TYPE option<record<Aufnahme>>;

10
surreal/Event.sql Normal file
View File

@@ -0,0 +1,10 @@
DEFINE TABLE Event SCHEMAFULL;
DEFINE FIELD erstellungsdatum ON TABLE Event TYPE datetime DEFAULT time::now();
DEFINE FIELD title ON TABLE Event TYPE string;
DEFINE FIELD description ON TABLE Event TYPE option<string>;
-- Verlinkung des Gebäudes
DEFINE FIELD aufnahme ON TABLE Event TYPE record<Aufnahme>;
-- Verlinkung des Benutzers
DEFINE FIELD benutzer ON TABLE Event TYPE record<Benutzer>;

16
surreal/Objekt.sql Normal file
View File

@@ -0,0 +1,16 @@
DEFINE TABLE Objekt SCHEMAFULL;
DEFINE FIELD id ON TABLE Objekt TYPE string;
DEFINE FIELD latitude ON TABLE Objekt TYPE option<float>;
DEFINE FIELD longitude ON TABLE Objekt TYPE option<float>;
-- @zod.describe("Postleitzahl des Gebäudes")
DEFINE FIELD plz ON TABLE Objekt TYPE option<string>;
-- @zod.describe("Ort des Gebäudes")
DEFINE FIELD ort ON TABLE Objekt TYPE option<string>;
-- @zod.describe("Adresse (Straße und Hausnummer) des Gebäudes")
DEFINE FIELD adresse ON TABLE Objekt TYPE option<string>;
DEFINE FIELD erstellungsdatum ON TABLE Objekt TYPE datetime DEFAULT time::now();
DEFINE FIELD aufnahmen ON TABLE Objekt TYPE array<record<Aufnahme>>;

10
surreal/Unterlage.sql Normal file
View File

@@ -0,0 +1,10 @@
DEFINE TABLE Unterlage SCHEMAFULL;
DEFINE FIELD name ON TABLE Unterlage TYPE string;
DEFINE FIELD mime ON TABLE Unterlage TYPE string;
DEFINE FIELD kategorie ON TABLE Unterlage TYPE "Grundriss" | "Sonstiges";
DEFINE FIELD created_at ON TABLE Unterlage TYPE datetime DEFAULT time::now();
DEFINE FIELD updated_at ON TABLE Unterlage TYPE datetime VALUE time::now();
DEFINE FIELD aufnahme ON TABLE Unterlage TYPE option<record<Aufnahme>>;

View File

@@ -0,0 +1,63 @@
DEFINE TABLE VerbrauchsausweisWohnen SCHEMAFULL;
DEFINE FIELD alte_ausweis_id ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD ausstellgrund ON VerbrauchsausweisWohnen TYPE string; -- Ausstellgrund enum assumed as string
DEFINE FIELD registriernummer ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD zusaetzliche_heizquelle ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD einheit_1 ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD einheit_2 ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD brennstoff_1 ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD brennstoff_2 ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD energieeffizienzklasse ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD ausstellungsdatum ON VerbrauchsausweisWohnen TYPE datetime;
DEFINE FIELD boxpruefung ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD startdatum ON VerbrauchsausweisWohnen TYPE datetime;
DEFINE FIELD verbrauch_1 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD verbrauch_2 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD verbrauch_3 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD verbrauch_4 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD verbrauch_5 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD verbrauch_6 ON VerbrauchsausweisWohnen TYPE int;
DEFINE FIELD warmwasser_enthalten ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD warmwasser_anteil_bekannt ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD faktorKeller ON VerbrauchsausweisWohnen TYPE float;
DEFINE FIELD alternative_heizung ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD alternative_warmwasser ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD alternative_lueftung ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD alternative_kuehlung ON VerbrauchsausweisWohnen TYPE bool;
DEFINE FIELD anteil_warmwasser_1 ON VerbrauchsausweisWohnen TYPE float;
DEFINE FIELD anteil_warmwasser_2 ON VerbrauchsausweisWohnen TYPE float;
DEFINE FIELD ausgestellt ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD storniert ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD bestellt ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD zurueckgestellt ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD prueftext ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD beschreibung ON VerbrauchsausweisWohnen TYPE string;
DEFINE FIELD kontrolldatei_angefragt ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD ausweistyp ON VerbrauchsausweisWohnen TYPE string DEFAULT "Standard"; -- Enum default
DEFINE FIELD ausweisart ON VerbrauchsausweisWohnen TYPE string DEFAULT "VerbrauchsausweisWohnen"; -- Enum default
DEFINE FIELD created_at ON VerbrauchsausweisWohnen TYPE datetime DEFAULT time::now();
DEFINE FIELD updated_at ON VerbrauchsausweisWohnen TYPE datetime DEFAULT time::now();
-- Prüfpunkte
DEFINE FIELD pruefpunkt_heizungsalter ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_verbrauch_niedrig ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_verbrauch_hoch ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_verbrauch_null ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_verbrauch_abweichung ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_wohnflaeche_einheiten ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_strom_null ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_strom_abweichung ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_plz ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_heizungsanlage ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_anteil_warmwasser ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_wohnflaeche ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_geometrie ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;
DEFINE FIELD pruefpunkt_fenster ON VerbrauchsausweisWohnen TYPE bool DEFAULT false;