From d3ca67399ce1b5fad5ee22c1e6d34e0ad896ee9a Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Sat, 22 Feb 2025 10:46:07 +1100 Subject: [PATCH] Makefile --- Makefile | 1 + prisma/prisma-enum-generator.ts | 7 +- src/astro-typesafe-api-caller.ts | 54 +++--- src/components/Ausweis/Ausweisart.svelte | 2 +- .../GEGNachweis/GEGAusweisart.svelte | 2 +- src/generated/enums.ts | 175 ++++++++++-------- src/lib/server/prisma.ts | 2 +- src/pages/api/admin/registriernummer.ts | 4 +- src/testing/daten-umziehen.ts | 2 +- 9 files changed, 132 insertions(+), 117 deletions(-) diff --git a/Makefile b/Makefile index 37b790f3..7735d672 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ restore-backup: install-dependencies: bun install + bunx prisma generate all: mkdir -p ~/logs diff --git a/prisma/prisma-enum-generator.ts b/prisma/prisma-enum-generator.ts index ad535d0f..3c591f7c 100644 --- a/prisma/prisma-enum-generator.ts +++ b/prisma/prisma-enum-generator.ts @@ -15,11 +15,12 @@ generatorHandler({ const enums = options.dmmf.datamodel.enums; const output = enums.map((e) => { - let enumString = `export enum ${e.name} {\n`; + let enumString = `export const ${e.name} = {\n`; e.values.forEach(({ name: value }) => { - enumString += ` ${value} = "${value}",\n`; + enumString += ` ${value}: "${value}",\n`; }); - enumString += `};\n\n`; + enumString += `} as const;\n\n`; + enumString += `export type ${e.name} = (typeof ${e.name})[keyof typeof ${e.name}];\n`; return enumString; }); diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 3b30b98b..d3a18203 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -5,33 +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"), - "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"), - "ausweise": await import("../src/pages/api/ausweise/index.ts"), - "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), - "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.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"), - "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"), - "objekt": await import("../src/pages/api/objekt/index.ts"), - "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"), - "rechnung": await import("../src/pages/api/rechnung/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-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"), - "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), - "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), - "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), - "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), - "aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"), - "aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"), - "aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"), - "objekt/[uid]": await import("../src/pages/api/objekt/[uid]/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"), @@ -39,4 +12,31 @@ 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"), + "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"), + "ausweise": await import("../src/pages/api/ausweise/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"), + "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"), + "ticket": await import("../src/pages/api/ticket/index.ts"), + "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"), + "rechnung": await import("../src/pages/api/rechnung/index.ts"), + "user": await import("../src/pages/api/user/index.ts"), + "user/self": await import("../src/pages/api/user/self.ts"), + "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), + "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), + "verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"), + "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), + "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), + "aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"), + "aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"), + "aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"), + "objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"), }) \ No newline at end of file diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index 716577ac..452eebc3 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -7,7 +7,7 @@ import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js"; import { addNotification, deleteNotification } from "#components/Notifications/shared.js"; import TagInput from "../TagInput.svelte"; - import { Enums } from "#lib/client/prisma"; + import { Enums } from "#lib/client/prisma.js"; import { BedarfsausweisWohnenClient, AufnahmeClient, diff --git a/src/components/GEGNachweis/GEGAusweisart.svelte b/src/components/GEGNachweis/GEGAusweisart.svelte index 8c764cb0..53a1dbdd 100644 --- a/src/components/GEGNachweis/GEGAusweisart.svelte +++ b/src/components/GEGNachweis/GEGAusweisart.svelte @@ -7,7 +7,7 @@ import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js"; import { addNotification, deleteNotification } from "#components/Notifications/shared.js"; import TagInput from "../TagInput.svelte"; - import { Enums } from "#lib/client/prisma"; + import { Enums } from "#lib/client/prisma.js"; import { AufnahmeClient, ObjektClient, diff --git a/src/generated/enums.ts b/src/generated/enums.ts index c38d492b..341a6396 100644 --- a/src/generated/enums.ts +++ b/src/generated/enums.ts @@ -1,107 +1,120 @@ // This file was generated by a custom prisma generator, do not edit manually. -export enum Heizungsstatus { - BEHEIZT = "BEHEIZT", - UNBEHEIZT = "UNBEHEIZT", - NICHT_VORHANDEN = "NICHT_VORHANDEN", -}; +export const Heizungsstatus = { + BEHEIZT: "BEHEIZT", + UNBEHEIZT: "UNBEHEIZT", + NICHT_VORHANDEN: "NICHT_VORHANDEN", +} as const; +export type Heizungsstatus = (typeof Heizungsstatus)[keyof typeof Heizungsstatus]; -export enum Lueftungskonzept { - Fensterlueftung = "Fensterlueftung", - Schachtlueftung = "Schachtlueftung", - LueftungsanlageMitWaermerueckgewinnung = "LueftungsanlageMitWaermerueckgewinnung", - LueftungsanlageOhneWaermerueckgewinnung = "LueftungsanlageOhneWaermerueckgewinnung", -}; +export const Lueftungskonzept = { + Fensterlueftung: "Fensterlueftung", + Schachtlueftung: "Schachtlueftung", + LueftungsanlageMitWaermerueckgewinnung: "LueftungsanlageMitWaermerueckgewinnung", + LueftungsanlageOhneWaermerueckgewinnung: "LueftungsanlageOhneWaermerueckgewinnung", +} as const; +export type Lueftungskonzept = (typeof Lueftungskonzept)[keyof typeof Lueftungskonzept]; -export enum BenutzerRolle { - USER = "USER", - ADMIN = "ADMIN", -}; +export const BenutzerRolle = { + USER: "USER", + ADMIN: "ADMIN", +} as const; +export type BenutzerRolle = (typeof BenutzerRolle)[keyof typeof BenutzerRolle]; -export enum BilderKategorie { - Heizung = "Heizung", - Fenster = "Fenster", - Gebaeude = "Gebaeude", - Daemmung = "Daemmung", -}; +export const BilderKategorie = { + Heizung: "Heizung", + Fenster: "Fenster", + Gebaeude: "Gebaeude", + Daemmung: "Daemmung", +} as const; +export type BilderKategorie = (typeof BilderKategorie)[keyof typeof BilderKategorie]; -export enum Einpreisungsstatus { - open = "open", - canceled = "canceled", - pending = "pending", - expired = "expired", -}; +export const Einpreisungsstatus = { + open: "open", + canceled: "canceled", + pending: "pending", + expired: "expired", +} as const; +export type Einpreisungsstatus = (typeof Einpreisungsstatus)[keyof typeof Einpreisungsstatus]; -export enum Bezahlmethoden { - paypal = "paypal", - giropay = "giropay", - sofort = "sofort", - creditcard = "creditcard", - rechnung = "rechnung", -}; +export const Bezahlmethoden = { + paypal: "paypal", + giropay: "giropay", + sofort: "sofort", + creditcard: "creditcard", + rechnung: "rechnung", +} as const; +export type Bezahlmethoden = (typeof Bezahlmethoden)[keyof typeof Bezahlmethoden]; -export enum Rechnungsstatus { - open = "open", - canceled = "canceled", - pending = "pending", - authorized = "authorized", - expired = "expired", - failed = "failed", - paid = "paid", -}; +export const Rechnungsstatus = { + open: "open", + canceled: "canceled", + pending: "pending", + authorized: "authorized", + expired: "expired", + failed: "failed", + paid: "paid", +} as const; +export type Rechnungsstatus = (typeof Rechnungsstatus)[keyof typeof Rechnungsstatus]; -export enum AusweisTyp { - Standard = "Standard", - Beratung = "Beratung", - Offline = "Offline", -}; +export const AusweisTyp = { + Standard: "Standard", + Beratung: "Beratung", + Offline: "Offline", +} as const; +export type AusweisTyp = (typeof AusweisTyp)[keyof typeof AusweisTyp]; -export enum TicketStatus { - OFFEN = "OFFEN", - IN_BEARBEITUNG = "IN_BEARBEITUNG", - IN_WARTESCHLEIFE = "IN_WARTESCHLEIFE", - GESCHLOSSEN = "GESCHLOSSEN", - GELOEST = "GELOEST", -}; +export const TicketStatus = { + OFFEN: "OFFEN", + IN_BEARBEITUNG: "IN_BEARBEITUNG", + IN_WARTESCHLEIFE: "IN_WARTESCHLEIFE", + GESCHLOSSEN: "GESCHLOSSEN", + GELOEST: "GELOEST", +} as const; +export type TicketStatus = (typeof TicketStatus)[keyof typeof TicketStatus]; -export enum UnterlagenKategorie { - Grundriss = "Grundriss", - Sonstiges = "Sonstiges", -}; +export const UnterlagenKategorie = { + Grundriss: "Grundriss", + Sonstiges: "Sonstiges", +} as const; +export type UnterlagenKategorie = (typeof UnterlagenKategorie)[keyof typeof UnterlagenKategorie]; -export enum Ausstellgrund { - Neubau = "Neubau", - Vermietung = "Vermietung", - Verkauf = "Verkauf", - Modernisierung = "Modernisierung", - Sonstiges = "Sonstiges", -}; +export const Ausstellgrund = { + Neubau: "Neubau", + Vermietung: "Vermietung", + Verkauf: "Verkauf", + Modernisierung: "Modernisierung", + Sonstiges: "Sonstiges", +} as const; +export type Ausstellgrund = (typeof Ausstellgrund)[keyof typeof Ausstellgrund]; -export enum Ausweisart { - VerbrauchsausweisWohnen = "VerbrauchsausweisWohnen", - VerbrauchsausweisGewerbe = "VerbrauchsausweisGewerbe", - BedarfsausweisWohnen = "BedarfsausweisWohnen", - BedarfsausweisGewerbe = "BedarfsausweisGewerbe", - GEGNachweisWohnen = "GEGNachweisWohnen", - GEGNachweisBedarfsausweis = "GEGNachweisBedarfsausweis", - GEGNachweisGewerbe = "GEGNachweisGewerbe", -}; +export const Ausweisart = { + VerbrauchsausweisWohnen: "VerbrauchsausweisWohnen", + VerbrauchsausweisGewerbe: "VerbrauchsausweisGewerbe", + BedarfsausweisWohnen: "BedarfsausweisWohnen", + BedarfsausweisGewerbe: "BedarfsausweisGewerbe", + GEGNachweisWohnen: "GEGNachweisWohnen", + GEGNachweisBedarfsausweis: "GEGNachweisBedarfsausweis", + GEGNachweisGewerbe: "GEGNachweisGewerbe", +} as const; +export type Ausweisart = (typeof Ausweisart)[keyof typeof Ausweisart]; -export enum Service { - Telefonberatung = "Telefonberatung", - Aushang = "Aushang", - Qualitaetsdruck = "Qualitaetsdruck", - SameDay = "SameDay", -}; +export const Service = { + Telefonberatung: "Telefonberatung", + Aushang: "Aushang", + Qualitaetsdruck: "Qualitaetsdruck", + SameDay: "SameDay", +} as const; +export type Service = (typeof Service)[keyof typeof Service]; diff --git a/src/lib/server/prisma.ts b/src/lib/server/prisma.ts index bf3907a3..0a7f41a8 100644 --- a/src/lib/server/prisma.ts +++ b/src/lib/server/prisma.ts @@ -1,6 +1,6 @@ import { PrismaClient } from "@prisma/client"; export type * from "@prisma/client" -export { $Enums as Enums } from "@prisma/client"; +export * as Enums from "../../generated/enums.js"; export * from "../../generated/zod/index.js"; export const prisma = new PrismaClient({ diff --git a/src/pages/api/admin/registriernummer.ts b/src/pages/api/admin/registriernummer.ts index 6eec03ee..8df9913f 100644 --- a/src/pages/api/admin/registriernummer.ts +++ b/src/pages/api/admin/registriernummer.ts @@ -11,8 +11,8 @@ import { Enums, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen, -} from "#lib/client/prisma"; -import { prisma } from "#lib/server/prisma"; +} from "#lib/server/prisma.js"; +import { prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import moment from "moment"; import { z } from "zod"; diff --git a/src/testing/daten-umziehen.ts b/src/testing/daten-umziehen.ts index f8eb5189..4c1911f3 100644 --- a/src/testing/daten-umziehen.ts +++ b/src/testing/daten-umziehen.ts @@ -1,7 +1,7 @@ import moment from "moment"; import newUserIdMap from "./new-user-id-map.json" assert { type: "json" }; import processed from "./processed.json" assert { type: "json" }; -import { Benutzer, Enums, prisma } from "#lib/server/prisma"; +import { Benutzer, Enums, prisma } from "#lib/server/prisma.js"; import * as fs from "fs"; import { fileURLToPath } from "url"; import { hashPassword } from "#lib/password.js";