Datenbank Schema Änderungen

This commit is contained in:
Moritz Utcke
2024-01-06 14:12:01 +07:00
parent 9a6f5218d0
commit 30cc5fab63
77 changed files with 661 additions and 2385 deletions

View File

@@ -1,9 +1,8 @@
import { prisma } from "@ibcornelsen/database";
import type { APIRoute } from "astro";
import { ActionFailedError, MissingEntityError, error, success } from "src/lib/APIResponse";
import { Ausweis } from "src/lib/Ausweis/Ausweis";
import { Energiekennwerte } from "src/lib/Energiekennwerte";
import { Gebaeude } from "src/lib/Gebaeude";
import { db } from "src/lib/shared";
import { z } from "zod";
const AusweisUploadChecker = z.object({
@@ -83,54 +82,35 @@ export const post: APIRoute = async ({ request }) => {
return error(validation.error.issues);
}
let gebaeude, kennwerte, ausweis;
let gebaeude, ausweis;
if (body.gebaeude_uid) {
gebaeude = await db("gebaeude")
.update(body.gebaeude)
.where("uid", body.gebaeude_uid)
.returning(["uid", "id"]);
gebaeude = await prisma.gebaeudeStammdaten.update({
where: {
uid: body.gebaeude_uid,
},
data: body.gebaeude,
})
} else {
gebaeude = await db("gebaeude")
.insert(body.gebaeude)
.returning(["uid", "id"]);
gebaeude = await prisma.gebaeudeStammdaten.create({
data: body.gebaeude,
})
}
if (!gebaeude) {
return ActionFailedError();
}
if (body.kennwerte_uid) {
kennwerte = await db("energiekennwerte")
.update({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
.where("uid", body.kennwerte_uid)
.returning(["uid", "id"]);
} else {
kennwerte = await db("energiekennwerte")
.insert({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
.returning(["uid", "id"]);
}
if (!kennwerte) {
return ActionFailedError();
}
if (body.ausweis_uid) {
ausweis = await db("energieausweise")
.update({
...body.ausweis,
gebaeude_id: gebaeude[0].id,
energiekennwerte_id: kennwerte[0].id,
})
.where("uid", body.ausweis_uid)
.returning(["uid", "id"]);
ausweis = await prisma.verbrauchsausweisWohnen.update({
where: {
uid: body.ausweis_uid,
},
data: body.ausweis,
})
} else {
ausweis = await db("energieausweise")
.insert({
...body.ausweis,
gebaeude_id: gebaeude[0].id,
energiekennwerte_id: kennwerte[0].id,
})
.returning(["uid", "id"]);
ausweis = await prisma.verbrauchsausweisWohnen.create({
data: body.ausweis,
})
}
if (!ausweis) {
@@ -138,9 +118,8 @@ export const post: APIRoute = async ({ request }) => {
}
return success({
ausweis: ausweis[0],
kennwerte: kennwerte[0],
gebaeude: gebaeude[0],
ausweis: ausweis,
gebaeude: gebaeude,
});
};
@@ -153,29 +132,18 @@ export const get: APIRoute = async ({ request }) => {
return error(validation.error.issues);
}
let result = await db<{ gebaeude: Gebaeude, kennwerte: Energiekennwerte, ausweis: Ausweis}>("gebaeude")
.select([
db.raw("(json_agg(gebaeude)->0) AS gebaeude"),
db.raw("(json_agg(energiekennwerte)->0) AS kennwerte"),
db.raw("(json_agg(energieausweise)->0) AS ausweis"),
])
.leftJoin(
"energiekennwerte",
"energiekennwerte.gebaeude_id",
"gebaeude.id"
)
.leftJoin(
"energieausweise",
"energieausweise.gebaeude_id",
"gebaeude.id"
)
.where("gebaeude.uid", body.uid)
.groupBy("gebaeude.id")
.first();
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
where: {
uid: body.uid,
},
include: {
gebaeude_stammdaten: true,
}
})
if (!result) {
if (!ausweis) {
return MissingEntityError("gebäude");
}
return result;
return success(ausweis);
};

View File

@@ -4,7 +4,7 @@ import {
error,
success,
} from "src/lib/APIResponse";
import { db, prisma } from "src/lib/shared";
import { prisma } from "@ibcornelsen/database";
export const get: APIRoute = async ({ url }) => {
const body = url.searchParams

View File

@@ -5,7 +5,7 @@ import {
} from "src/lib/APIResponse";
import * as path from "path";
import * as fs from "fs";
import { prisma } from "src/lib/shared";
import { prisma } from "@ibcornelsen/database";
export const get: APIRoute = async ({ url }) => {
const body = url.searchParams

View File

@@ -9,7 +9,7 @@ import * as jimp from "jimp";
import { z } from "zod";
import * as path from "path";
import * as fs from "fs";
import { db, prisma } from "src/lib/shared";
import { prisma } from "@ibcornelsen/database";
const ImageUploadChecker = z.object({
data: z.string(),

View File

@@ -1,6 +1,6 @@
import type { APIRoute } from "astro";
import { success, MissingPropertyError, error } from "../../lib/APIResponse";
import { validatePassword, hashPassword } from "../../lib/Password";
import { validatePassword } from "../../lib/Password";
import { User } from "../../lib/User";
import moment from "moment";
import { encodeToken } from "../../lib/JsonWebToken";