DB Schema

This commit is contained in:
Moritz Utcke
2025-04-07 16:12:02 -04:00
parent 2abb143cfe
commit 1d27e2bd67
13 changed files with 44 additions and 14 deletions

View File

@@ -1,8 +1,10 @@
#!/bin/bash #!/bin/bash
FILE_NAME=dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
# Wir exportieren die Datenbank und komprimieren sie. # Wir exportieren die Datenbank und komprimieren sie.
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE
# Das wird benötigt für AWS Ionos Kompatibilität. # Das wird benötigt für AWS Ionos Kompatibilität.
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
@@ -12,6 +14,8 @@ export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
# Das Profil kann mit `aws configure --profile ionos` erstellt werden. # Das Profil kann mit `aws configure --profile ionos` erstellt werden.
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management # Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
# Wir entfernen das Backup # Wir entfernen das Backup
rm $FILE_NAME rm $FILE_NAME
rm $FILE_NAME_COMPLETE

View File

@@ -0,0 +1,26 @@
-- AlterTable
ALTER TABLE "BedarfsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "Bild" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "GEGNachweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "GEGNachweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "Rechnung" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "VerbrauchsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "VerbrauchsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "benutzer" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;

View File

@@ -28,7 +28,7 @@ model BedarfsausweisGewerbe {
nachweistyp AusweisTyp @default(Standard) nachweistyp AusweisTyp @default(Standard)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String? benutzer_id String?

View File

@@ -82,7 +82,7 @@ model BedarfsausweisWohnen {
kontrolldatei_angefragt Boolean? @default(false) kontrolldatei_angefragt Boolean? @default(false)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
pruefpunkt_heizungsalter Boolean? @default(false) pruefpunkt_heizungsalter Boolean? @default(false)
pruefpunkt_verbrauch_niedrig Boolean? @default(false) pruefpunkt_verbrauch_niedrig Boolean? @default(false)

View File

@@ -42,7 +42,7 @@ model Benutzer {
bedarfsausweise_gewerbe BedarfsausweisGewerbe[] bedarfsausweise_gewerbe BedarfsausweisGewerbe[]
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
ErstellteTickets Tickets[] @relation("ErstellteTickets") ErstellteTickets Tickets[] @relation("ErstellteTickets")

View File

@@ -13,7 +13,7 @@ model Bild {
name String name String
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
aufnahme_id String? aufnahme_id String?
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)

View File

@@ -19,7 +19,7 @@ model GEGNachweisGewerbe {
nachweistyp AusweisTyp @default(Standard) nachweistyp AusweisTyp @default(Standard)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String? benutzer_id String?

View File

@@ -19,7 +19,7 @@ model GEGNachweisWohnen {
nachweistyp AusweisTyp @default(Standard) nachweistyp AusweisTyp @default(Standard)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String? benutzer_id String?

View File

@@ -57,7 +57,7 @@ model Rechnung {
lex_office_id String? lex_office_id String?
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
benutzer_id String benutzer_id String
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)

View File

@@ -71,7 +71,7 @@ model VerbrauchsausweisGewerbe {
kontrolldatei_angefragt Boolean? @default(false) kontrolldatei_angefragt Boolean? @default(false)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
ausweistyp AusweisTyp @default(Standard) ausweistyp AusweisTyp @default(Standard)

View File

@@ -77,7 +77,7 @@ model VerbrauchsausweisWohnen {
ausweistyp AusweisTyp @default(Standard) ausweistyp AusweisTyp @default(Standard)
created_at DateTime @default(now()) created_at DateTime @default(now())
updated_at DateTime @updatedAt updated_at DateTime @updatedAt @default(now())
pruefpunkt_heizungsalter Boolean? @default(false) pruefpunkt_heizungsalter Boolean? @default(false)
pruefpunkt_verbrauch_niedrig Boolean? @default(false) pruefpunkt_verbrauch_niedrig Boolean? @default(false)

View File

@@ -45,7 +45,7 @@ export const AufnahmeSchema = z.object({
isolier_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen").nullish(), isolier_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen").nullish(),
tueren_undicht: z.boolean().describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen").nullish(), tueren_undicht: z.boolean().describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen").nullish(),
tueren_dicht: z.boolean().describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen").nullish(), tueren_dicht: z.boolean().describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen").nullish(),
dachgeschoss_gedaemmt: z.boolean().describe("Falls das Dachgeschoss des Gebäudes ged<EFBFBD><EFBFBD>mmt ist, sollte dieser Wert auf true stehen").nullish(), dachgeschoss_gedaemmt: z.boolean().describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
keller_decke_gedaemmt: z.boolean().describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(), keller_decke_gedaemmt: z.boolean().describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
keller_wand_gedaemmt: z.boolean().describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(), keller_wand_gedaemmt: z.boolean().describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
aussenwand_gedaemmt: z.boolean().describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(), aussenwand_gedaemmt: z.boolean().describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),

View File

@@ -139,7 +139,7 @@ Papa.parse(file, {
const aufnahme_id = generatePrefixedId( const aufnahme_id = generatePrefixedId(
6, 6,
VALID_UUID_PREFIXES.Objekt VALID_UUID_PREFIXES.Aufnahme
); );
const aufnahme = await prisma.aufnahme.create({ const aufnahme = await prisma.aufnahme.create({