diff --git a/prisma/migrations/20250222150442_/migration.sql b/prisma/migrations/20250222150442_/migration.sql new file mode 100644 index 00000000..2c8fab83 --- /dev/null +++ b/prisma/migrations/20250222150442_/migration.sql @@ -0,0 +1,783 @@ +-- CreateEnum +CREATE TYPE "Heizungsstatus" AS ENUM ('BEHEIZT', 'UNBEHEIZT', 'NICHT_VORHANDEN'); + +-- CreateEnum +CREATE TYPE "Lueftungskonzept" AS ENUM ('Fensterlueftung', 'Schachtlueftung', 'LueftungsanlageMitWaermerueckgewinnung', 'LueftungsanlageOhneWaermerueckgewinnung'); + +-- CreateEnum +CREATE TYPE "BenutzerRolle" AS ENUM ('USER', 'ADMIN'); + +-- CreateEnum +CREATE TYPE "BilderKategorie" AS ENUM ('Heizung', 'Fenster', 'Gebaeude', 'Daemmung'); + +-- CreateEnum +CREATE TYPE "Einpreisungsstatus" AS ENUM ('open', 'canceled', 'pending', 'expired'); + +-- CreateEnum +CREATE TYPE "Bezahlmethoden" AS ENUM ('paypal', 'giropay', 'sofort', 'creditcard', 'rechnung'); + +-- CreateEnum +CREATE TYPE "Rechnungsstatus" AS ENUM ('open', 'canceled', 'pending', 'authorized', 'expired', 'failed', 'paid'); + +-- CreateEnum +CREATE TYPE "AusweisTyp" AS ENUM ('Standard', 'Beratung', 'Offline'); + +-- CreateEnum +CREATE TYPE "TicketStatus" AS ENUM ('OFFEN', 'IN_BEARBEITUNG', 'IN_WARTESCHLEIFE', 'GESCHLOSSEN', 'GELOEST'); + +-- CreateEnum +CREATE TYPE "UnterlagenKategorie" AS ENUM ('Grundriss', 'Sonstiges'); + +-- CreateEnum +CREATE TYPE "Ausstellgrund" AS ENUM ('Neubau', 'Vermietung', 'Verkauf', 'Modernisierung', 'Sonstiges'); + +-- CreateEnum +CREATE TYPE "Ausweisart" AS ENUM ('VerbrauchsausweisWohnen', 'VerbrauchsausweisGewerbe', 'BedarfsausweisWohnen', 'BedarfsausweisGewerbe', 'GEGNachweisWohnen', 'GEGNachweisBedarfsausweis', 'GEGNachweisGewerbe'); + +-- CreateEnum +CREATE TYPE "Service" AS ENUM ('Telefonberatung', 'Aushang', 'Qualitaetsdruck', 'SameDay'); + +-- CreateTable +CREATE TABLE "Anteilshaber" ( + "id" SERIAL NOT NULL, + "benutzer_id" INTEGER NOT NULL, + "rolle" VARCHAR, + "privilegien" BIGINT, + "uid" TEXT NOT NULL DEFAULT 'ant-' || gen_random_uuid(), + "objekt_id" INTEGER NOT NULL, + + CONSTRAINT "Anteilshaber_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ApiRequests" ( + "id" SERIAL NOT NULL, + "date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "ip" VARCHAR(50) NOT NULL, + "method" VARCHAR(10) NOT NULL, + "path" VARCHAR(100) NOT NULL, + "status" INTEGER NOT NULL, + "responseTime" DOUBLE PRECISION NOT NULL, + "responseSize" INTEGER NOT NULL, + "userAgent" VARCHAR(500) NOT NULL, + "user_id" INTEGER, + + CONSTRAINT "ApiRequests_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Aufnahme" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'auf-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "ausweisart" "Ausweisart", + "gebaeudetyp" VARCHAR, + "gebaeudeteil" VARCHAR, + "baujahr_gebaeude" INTEGER[], + "baujahr_heizung" INTEGER[], + "baujahr_klima" INTEGER[], + "einheiten" INTEGER, + "flaeche" INTEGER, + "nutzflaeche" INTEGER, + "saniert" BOOLEAN, + "keller" "Heizungsstatus", + "dachgeschoss" "Heizungsstatus", + "lueftung" "Lueftungskonzept", + "kuehlung" VARCHAR(50), + "leerstand" INTEGER, + "alternative_heizung" BOOLEAN, + "alternative_warmwasser" BOOLEAN, + "alternative_lueftung" BOOLEAN, + "alternative_kuehlung" BOOLEAN, + "brennstoff_1" VARCHAR(50), + "brennstoff_2" VARCHAR(50), + "boxpruefung" BOOLEAN DEFAULT false, + "energieeffizienzklasse" VARCHAR(5), + "erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "ausstellungsdatum" TIMESTAMP(3), + "zentralheizung" BOOLEAN, + "solarsystem_warmwasser" BOOLEAN, + "warmwasser_rohre_gedaemmt" BOOLEAN, + "niedertemperatur_kessel" BOOLEAN, + "brennwert_kessel" BOOLEAN, + "heizungsrohre_gedaemmt" BOOLEAN, + "standard_kessel" BOOLEAN, + "waermepumpe" BOOLEAN, + "raum_temperatur_regler" BOOLEAN, + "photovoltaik" BOOLEAN, + "durchlauf_erhitzer" BOOLEAN, + "einzelofen" BOOLEAN, + "zirkulation" BOOLEAN, + "einfach_verglasung" BOOLEAN, + "dreifach_verglasung" BOOLEAN, + "fenster_teilweise_undicht" BOOLEAN, + "doppel_verglasung" BOOLEAN, + "fenster_dicht" BOOLEAN, + "rolllaeden_kaesten_gedaemmt" BOOLEAN, + "isolier_verglasung" BOOLEAN, + "tueren_undicht" BOOLEAN, + "tueren_dicht" BOOLEAN, + "dachgeschoss_gedaemmt" BOOLEAN, + "keller_decke_gedaemmt" BOOLEAN, + "keller_wand_gedaemmt" BOOLEAN, + "aussenwand_gedaemmt" BOOLEAN, + "oberste_geschossdecke_gedaemmt" BOOLEAN, + "aussenwand_min_12cm_gedaemmt" BOOLEAN, + "dachgeschoss_min_12cm_gedaemmt" BOOLEAN, + "oberste_geschossdecke_min_12cm_gedaemmt" BOOLEAN, + "objekt_id" INTEGER NOT NULL, + + CONSTRAINT "Aufnahme_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BedarfsausweisGewerbe" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'bag-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + "rechnung_id" INTEGER, + "geg_einpreisung_id" INTEGER, + + CONSTRAINT "BedarfsausweisGewerbe_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BedarfsausweisWohnen" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'baw-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "ausstellgrund" "Ausstellgrund", + "registriernummer" VARCHAR, + "alternative_heizung" BOOLEAN, + "alternative_warmwasser" BOOLEAN, + "alternative_lueftung" BOOLEAN, + "alternative_kuehlung" BOOLEAN, + "anzahl_vollgeschosse" INTEGER, + "geschosshoehe" DOUBLE PRECISION, + "anzahl_gauben" INTEGER, + "breite_gauben" DOUBLE PRECISION, + "masse_a" DOUBLE PRECISION, + "masse_b" DOUBLE PRECISION, + "masse_c" DOUBLE PRECISION, + "masse_d" DOUBLE PRECISION, + "masse_e" DOUBLE PRECISION, + "masse_f" DOUBLE PRECISION, + "fensterflaeche_so_sw" DOUBLE PRECISION, + "fensterflaeche_nw_no" DOUBLE PRECISION, + "aussenwandflaeche_unbeheizt" DOUBLE PRECISION, + "dachflaeche" DOUBLE PRECISION, + "deckenflaeche" DOUBLE PRECISION, + "dach_u_wert" DOUBLE PRECISION, + "decke_u_wert" DOUBLE PRECISION, + "aussenwand_flaeche" DOUBLE PRECISION, + "aussenwand_u_wert" DOUBLE PRECISION, + "fussboden_flaeche" DOUBLE PRECISION, + "fussboden_u_wert" DOUBLE PRECISION, + "volumen" DOUBLE PRECISION, + "dicht" BOOLEAN, + "fenster_flaeche_1" DOUBLE PRECISION, + "fenster_art_1" DOUBLE PRECISION, + "fenster_flaeche_2" DOUBLE PRECISION, + "fenster_art_2" DOUBLE PRECISION, + "dachfenster_flaeche" DOUBLE PRECISION, + "dachfenster_art" DOUBLE PRECISION, + "haustuer_flaeche" DOUBLE PRECISION, + "haustuer_art" DOUBLE PRECISION, + "dach_bauart" VARCHAR, + "decke_bauart" VARCHAR, + "dach_daemmung" DOUBLE PRECISION, + "decke_daemmung" DOUBLE PRECISION, + "aussenwand_daemmung" DOUBLE PRECISION, + "boden_daemmung" DOUBLE PRECISION, + "aussenwand_bauart" VARCHAR, + "boden_bauart" VARCHAR, + "warmwasser_verteilung" VARCHAR, + "warmwasser_speicherung" VARCHAR, + "warmwasser_erzeugung" VARCHAR, + "heizung_zentral" BOOLEAN, + "heizung_verteilung" VARCHAR, + "heizung_speicherung" VARCHAR, + "waerme_erzeugung_heizung" VARCHAR, + "anteil_zusatzheizung" DOUBLE PRECISION, + "kollektor_flaeche" DOUBLE PRECISION, + "ausgestellt" BOOLEAN DEFAULT false, + "storniert" BOOLEAN DEFAULT false, + "bestellt" BOOLEAN DEFAULT false, + "zurueckgestellt" BOOLEAN DEFAULT false, + "prueftext" VARCHAR(1000), + "beschreibung" TEXT, + "kontrolldatei_angefragt" BOOLEAN DEFAULT false, + "rechnung_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + + CONSTRAINT "BedarfsausweisWohnen_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "benutzer" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'usr-' || gen_random_uuid(), + "name" VARCHAR(50), + "vorname" VARCHAR(50), + "email" VARCHAR(255) NOT NULL, + "passwort" VARCHAR(255) NOT NULL, + "profilbild" VARCHAR, + "plz" VARCHAR(5), + "ort" VARCHAR(50), + "adresse" VARCHAR(100), + "telefon" VARCHAR(50), + "anrede" VARCHAR(50), + "rolle" "BenutzerRolle" NOT NULL DEFAULT 'USER', + "firma" TEXT, + "lex_office_id" TEXT, + + CONSTRAINT "benutzer_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Bild" ( + "id" SERIAL NOT NULL, + "kategorie" "BilderKategorie" NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'img-' || gen_random_uuid(), + "aufnahme_id" INTEGER, + + CONSTRAINT "Bild_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Event" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'evt-' || gen_random_uuid(), + "date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "title" VARCHAR(255) NOT NULL, + "description" TEXT, + "aufnahme_id" INTEGER NOT NULL, + "benutzer_id" INTEGER, + + CONSTRAINT "Event_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "GEGEinpreisung" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'gge-' || gen_random_uuid(), + "empfaenger" VARCHAR, + "strasse" VARCHAR, + "plz" VARCHAR, + "ort" VARCHAR, + "zusatzzeile" VARCHAR, + "telefon" VARCHAR, + "email" VARCHAR, + "abweichende_versand_adresse" BOOLEAN DEFAULT false, + "versand_empfaenger" VARCHAR, + "versand_strasse" VARCHAR, + "versand_plz" VARCHAR, + "versand_ort" VARCHAR, + "versand_zusatzzeile" VARCHAR, + "status" "Einpreisungsstatus" NOT NULL, + "benutzer_id" INTEGER, + + CONSTRAINT "GEGEinpreisung_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "GEGNachweisGewerbe" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'gnw-' || gen_random_uuid(), + "ausstellgrund" "Ausstellgrund", + "keller_beheizt" BOOLEAN, + "storniert" BOOLEAN DEFAULT false, + "bestellt" BOOLEAN DEFAULT false, + "zurueckgestellt" BOOLEAN DEFAULT false, + "beschreibung" TEXT, + "benutzer_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + "rechnung_id" INTEGER, + "geg_einpreisung_id" INTEGER, + + CONSTRAINT "GEGNachweisGewerbe_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "GEGNachweisWohnen" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'gnw-' || gen_random_uuid(), + "ausstellgrund" "Ausstellgrund", + "keller_beheizt" BOOLEAN, + "storniert" BOOLEAN DEFAULT false, + "bestellt" BOOLEAN DEFAULT false, + "zurueckgestellt" BOOLEAN DEFAULT false, + "beschreibung" TEXT, + "benutzer_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + "rechnung_id" INTEGER, + "geg_einpreisung_id" INTEGER, + + CONSTRAINT "GEGNachweisWohnen_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Klimafaktoren" ( + "id" SERIAL NOT NULL, + "plz" VARCHAR(5) NOT NULL, + "month" INTEGER NOT NULL, + "year" INTEGER NOT NULL, + "klimafaktor" DOUBLE PRECISION NOT NULL DEFAULT 1, + + CONSTRAINT "Klimafaktoren_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Objekt" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'obj-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "latitude" DOUBLE PRECISION, + "longitude" DOUBLE PRECISION, + "plz" VARCHAR(5), + "ort" VARCHAR(50), + "adresse" VARCHAR(100), + "erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Objekt_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Postleitzahlen" ( + "id" SERIAL NOT NULL, + "plz" VARCHAR(5) NOT NULL, + "stadt" VARCHAR(100) NOT NULL, + "bundesland" VARCHAR(100) NOT NULL, + "landkreis" VARCHAR(100) NOT NULL, + "lat" DOUBLE PRECISION NOT NULL, + "lon" DOUBLE PRECISION NOT NULL, + + CONSTRAINT "Postleitzahlen_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Rechnung" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'inv-' || gen_random_uuid(), + "benutzer_id" INTEGER NOT NULL, + "empfaenger" VARCHAR, + "strasse" VARCHAR, + "plz" VARCHAR, + "ort" VARCHAR, + "zusatzzeile" VARCHAR, + "telefon" VARCHAR, + "email" VARCHAR, + "abweichende_versand_adresse" BOOLEAN DEFAULT false, + "versand_empfaenger" VARCHAR, + "versand_strasse" VARCHAR, + "versand_plz" VARCHAR, + "versand_ort" VARCHAR, + "versand_zusatzzeile" VARCHAR, + "bezahlmethode" "Bezahlmethoden" NOT NULL, + "status" "Rechnungsstatus" NOT NULL, + "services" "Service"[], + "ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard', + "betrag" DOUBLE PRECISION NOT NULL, + "erstellt_am" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "bezahlt_am" TIMESTAMP(3), + "storniert_am" TIMESTAMP(3), + "transaktions_referenz" VARCHAR, + + CONSTRAINT "Rechnung_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "RefreshTokens" ( + "id" SERIAL NOT NULL, + "benutzer_id" INTEGER NOT NULL, + "token" TEXT NOT NULL, + "ip" TEXT NOT NULL, + "expiry" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "RefreshTokens_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Tickets" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'tkt-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + "deleted_at" TIMESTAMP(3), + "status" "TicketStatus" NOT NULL DEFAULT 'OFFEN', + "titel" TEXT NOT NULL, + "beschreibung" TEXT NOT NULL, + "metadata" JSONB, + "email" TEXT NOT NULL, + "bearbeiter_id" INTEGER, + "prioritaet" INTEGER DEFAULT 0, + + CONSTRAINT "Tickets_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Unterlage" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'pln-' || gen_random_uuid(), + "name" TEXT, + "kategorie" TEXT, + "mime" TEXT, + "aufnahme_id" INTEGER, + + CONSTRAINT "Unterlage_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "VerbrauchsausweisGewerbe" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'vag-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "ausstellgrund" "Ausstellgrund", + "registriernummer" VARCHAR, + "zusaetzliche_heizquelle" BOOLEAN, + "brennstoff_1" VARCHAR(50), + "einheit_1" VARCHAR(50), + "brennstoff_2" VARCHAR(50), + "einheit_2" VARCHAR(50), + "startdatum" TIMESTAMP(6), + "verbrauch_1" INTEGER, + "verbrauch_2" INTEGER, + "verbrauch_3" INTEGER, + "verbrauch_4" INTEGER, + "verbrauch_5" INTEGER, + "verbrauch_6" INTEGER, + "strom_1" INTEGER, + "strom_2" INTEGER, + "strom_3" INTEGER, + "stromverbrauch_enthaelt_heizung" BOOLEAN, + "stromverbrauch_enthaelt_warmwasser" BOOLEAN, + "stromverbrauch_enthaelt_lueftung" BOOLEAN, + "stromverbrauch_enthaelt_beleuchtung" BOOLEAN, + "stromverbrauch_enthaelt_kuehlung" BOOLEAN, + "stromverbrauch_enthaelt_sonstige" VARCHAR(50), + "kuehlung_enthalten" BOOLEAN, + "anteil_kuehlung_1" DOUBLE PRECISION, + "anteil_kuehlung_2" DOUBLE PRECISION, + "keller_beheizt" BOOLEAN, + "alternative_heizung" BOOLEAN, + "alternative_warmwasser" BOOLEAN, + "alternative_lueftung" BOOLEAN, + "alternative_kuehlung" BOOLEAN, + "warmwasser_enthalten" BOOLEAN, + "anteil_warmwasser_1" DOUBLE PRECISION, + "anteil_warmwasser_2" DOUBLE PRECISION, + "ausgestellt" BOOLEAN DEFAULT false, + "storniert" BOOLEAN DEFAULT false, + "bestellt" BOOLEAN DEFAULT false, + "zurueckgestellt" BOOLEAN DEFAULT false, + "prueftext" VARCHAR(1000), + "beschreibung" TEXT, + "kontrolldatei_angefragt" BOOLEAN DEFAULT false, + "rechnung_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + + CONSTRAINT "VerbrauchsausweisGewerbe_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "VerbrauchsausweisWohnen" ( + "id" SERIAL NOT NULL, + "uid" TEXT NOT NULL DEFAULT 'vaw-' || gen_random_uuid(), + "benutzer_id" INTEGER, + "ausstellgrund" "Ausstellgrund", + "registriernummer" VARCHAR, + "zusaetzliche_heizquelle" BOOLEAN, + "einheit_1" VARCHAR(50), + "einheit_2" VARCHAR(50), + "startdatum" TIMESTAMPTZ(6), + "verbrauch_1" INTEGER, + "verbrauch_2" INTEGER, + "verbrauch_3" INTEGER, + "verbrauch_4" INTEGER, + "verbrauch_5" INTEGER, + "verbrauch_6" INTEGER, + "warmwasser_enthalten" BOOLEAN, + "warmwasser_anteil_bekannt" BOOLEAN, + "keller_beheizt" BOOLEAN, + "faktorKeller" DOUBLE PRECISION, + "alternative_heizung" BOOLEAN, + "alternative_warmwasser" BOOLEAN, + "alternative_lueftung" BOOLEAN, + "alternative_kuehlung" BOOLEAN, + "anteil_warmwasser_1" DOUBLE PRECISION, + "anteil_warmwasser_2" DOUBLE PRECISION, + "ausgestellt" BOOLEAN DEFAULT false, + "storniert" BOOLEAN DEFAULT false, + "bestellt" BOOLEAN DEFAULT false, + "zurueckgestellt" BOOLEAN DEFAULT false, + "prueftext" VARCHAR(1000), + "beschreibung" TEXT, + "kontrolldatei_angefragt" BOOLEAN DEFAULT false, + "rechnung_id" INTEGER, + "aufnahme_id" INTEGER NOT NULL, + + CONSTRAINT "VerbrauchsausweisWohnen_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "documenttemplates" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(100) NOT NULL, + "shortdescription" VARCHAR(100) NOT NULL, + "longdescription" VARCHAR(5000) NOT NULL, + "user_id" INTEGER NOT NULL, + "is_private" BOOLEAN NOT NULL DEFAULT true, + "documenttype" INTEGER NOT NULL, + "filename" VARCHAR(100) NOT NULL, + "created_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "PK_DOCUMENTTEMPLATES" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "documenttypes" ( + "id" SERIAL NOT NULL, + "name" VARCHAR(100) NOT NULL, + "shortdescription" VARCHAR(100) NOT NULL, + "longdescription" VARCHAR(5000) NOT NULL, + + CONSTRAINT "PK_DOCUMENTTYPES" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "tokens" ( + "id" SERIAL NOT NULL, + "token" VARCHAR(36) NOT NULL, + "user_id" INTEGER NOT NULL, + "date_created" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "last_used" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "times_used" INTEGER NOT NULL DEFAULT 0, + "permissions" INTEGER NOT NULL DEFAULT 0, + + CONSTRAINT "PK_TOKENS" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Anteilshaber_uid_key" ON "Anteilshaber"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Aufnahme_uid_key" ON "Aufnahme"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisGewerbe_uid_key" ON "BedarfsausweisGewerbe"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisGewerbe_aufnahme_id_key" ON "BedarfsausweisGewerbe"("aufnahme_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisGewerbe_rechnung_id_key" ON "BedarfsausweisGewerbe"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisGewerbe_geg_einpreisung_id_key" ON "BedarfsausweisGewerbe"("geg_einpreisung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisWohnen_uid_key" ON "BedarfsausweisWohnen"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisWohnen_rechnung_id_key" ON "BedarfsausweisWohnen"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "BedarfsausweisWohnen_aufnahme_id_key" ON "BedarfsausweisWohnen"("aufnahme_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "benutzer_uid_key" ON "benutzer"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "benutzer_email_idx" ON "benutzer"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Bild_uid_key" ON "Bild"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Event_uid_key" ON "Event"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGEinpreisung_uid_key" ON "GEGEinpreisung"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisGewerbe_uid_key" ON "GEGNachweisGewerbe"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisGewerbe_aufnahme_id_key" ON "GEGNachweisGewerbe"("aufnahme_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisGewerbe_rechnung_id_key" ON "GEGNachweisGewerbe"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisGewerbe_geg_einpreisung_id_key" ON "GEGNachweisGewerbe"("geg_einpreisung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisWohnen_uid_key" ON "GEGNachweisWohnen"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisWohnen_aufnahme_id_key" ON "GEGNachweisWohnen"("aufnahme_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisWohnen_rechnung_id_key" ON "GEGNachweisWohnen"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "GEGNachweisWohnen_geg_einpreisung_id_key" ON "GEGNachweisWohnen"("geg_einpreisung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "Klimafaktoren_plz_month_year_key" ON "Klimafaktoren"("plz", "month", "year"); + +-- CreateIndex +CREATE UNIQUE INDEX "Objekt_uid_key" ON "Objekt"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Rechnung_uid_key" ON "Rechnung"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Rechnung_transaktions_referenz_key" ON "Rechnung"("transaktions_referenz"); + +-- CreateIndex +CREATE UNIQUE INDEX "RefreshTokens_token_key" ON "RefreshTokens"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tickets_uid_key" ON "Tickets"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Unterlage_uid_key" ON "Unterlage"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_uid_key" ON "VerbrauchsausweisGewerbe"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_rechnung_id_key" ON "VerbrauchsausweisGewerbe"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_aufnahme_id_key" ON "VerbrauchsausweisGewerbe"("aufnahme_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_uid_key" ON "VerbrauchsausweisWohnen"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_rechnung_id_key" ON "VerbrauchsausweisWohnen"("rechnung_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_aufnahme_id_key" ON "VerbrauchsausweisWohnen"("aufnahme_id"); + +-- AddForeignKey +ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "ApiRequests" ADD CONSTRAINT "ApiRequests_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Bild" ADD CONSTRAINT "Bild_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGEinpreisung" ADD CONSTRAINT "GEGEinpreisung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "Objekt" ADD CONSTRAINT "Objekt_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Rechnung" ADD CONSTRAINT "Rechnung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "RefreshTokens" ADD CONSTRAINT "RefreshTokens_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_bearbeiter_id_fkey" FOREIGN KEY ("bearbeiter_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Unterlage" ADD CONSTRAINT "Unterlage_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE "documenttemplates" ADD CONSTRAINT "benutzer_fk" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documenttemplates" ADD CONSTRAINT "documenttypes_fk" FOREIGN KEY ("documenttype") REFERENCES "documenttypes"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "tokens" ADD CONSTRAINT "fk_benutzer_tokens_user_id" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION; diff --git a/prisma/migrations/20250222151858_/migration.sql b/prisma/migrations/20250222151858_/migration.sql new file mode 100644 index 00000000..4e4efaa6 --- /dev/null +++ b/prisma/migrations/20250222151858_/migration.sql @@ -0,0 +1,47 @@ +-- AlterTable +ALTER TABLE "Anteilshaber" ALTER COLUMN "uid" SET DEFAULT 'ant-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Aufnahme" ALTER COLUMN "uid" SET DEFAULT 'auf-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "BedarfsausweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'bag-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'baw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Bild" ALTER COLUMN "uid" SET DEFAULT 'img-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Event" ALTER COLUMN "uid" SET DEFAULT 'evt-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGEinpreisung" ALTER COLUMN "uid" SET DEFAULT 'gge-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGNachweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'gnw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGNachweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'gnw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Objekt" ALTER COLUMN "uid" SET DEFAULT 'obj-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Rechnung" ALTER COLUMN "uid" SET DEFAULT 'inv-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Tickets" ALTER COLUMN "uid" SET DEFAULT 'tkt-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Unterlage" ALTER COLUMN "uid" SET DEFAULT 'pln-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "VerbrauchsausweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'vag-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "VerbrauchsausweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'vaw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "benutzer" ALTER COLUMN "uid" SET DEFAULT 'usr-' || gen_random_uuid(); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..648c57fd --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" \ No newline at end of file diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index bafcf027..01c6a1a1 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -5,8 +5,6 @@ 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"), - "ausweise": await import("../src/pages/api/ausweise/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"), @@ -14,14 +12,16 @@ export const createCaller = createCallerFactory({ "admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), + "bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"), "geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"), "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), - "bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"), "geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"), "geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"), diff --git a/src/modules/Dashboard/DashboardAufnahmeModule.svelte b/src/modules/Dashboard/DashboardAufnahmeModule.svelte index 7c10077a..2f7ea482 100644 --- a/src/modules/Dashboard/DashboardAufnahmeModule.svelte +++ b/src/modules/Dashboard/DashboardAufnahmeModule.svelte @@ -16,7 +16,7 @@ {#if aufnahme.bilder.length > 0} {#each aufnahme.bilder as bild, i (i)} - {bild.kategorie} + {bild.kategorie} {/each}