From beac2582efe73e44552da4035d7c2813002b9c97 Mon Sep 17 00:00:00 2001 From: titver968 Date: Tue, 17 Jun 2025 11:14:34 +0200 Subject: [PATCH] sche.prisma und anmeldung --- .../migration.sql | 44 ++++++++++++++++++ .../migration.sql | 38 +++++++++++++++ prisma/praktika.db-journal | Bin 0 -> 21032 bytes prisma/schema.prisma | 23 ++++++--- src/routes/api/admin/anmeldungen/+server.ts | 12 +++-- src/routes/api/anmelden/+server.ts | 3 +- 6 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 prisma/migrations/20250617085825_fix_zugewiesen_relation/migration.sql create mode 100644 prisma/migrations/20250617091214_make_zugewiesen_optional/migration.sql create mode 100644 prisma/praktika.db-journal diff --git a/prisma/migrations/20250617085825_fix_zugewiesen_relation/migration.sql b/prisma/migrations/20250617085825_fix_zugewiesen_relation/migration.sql new file mode 100644 index 0000000..0327434 --- /dev/null +++ b/prisma/migrations/20250617085825_fix_zugewiesen_relation/migration.sql @@ -0,0 +1,44 @@ +/* + Warnings: + + - Added the required column `zugewiesenId` to the `Anmeldung` table without a default value. This is not possible if the table is not empty. + +*/ +-- RedefineTables +PRAGMA defer_foreign_keys=ON; +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_Anmeldung" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "anrede" TEXT NOT NULL, + "vorname" TEXT NOT NULL, + "nachname" TEXT NOT NULL, + "geburtsdatum" TEXT NOT NULL, + "strasse" TEXT NOT NULL, + "hausnummer" TEXT NOT NULL, + "ort" TEXT NOT NULL, + "plz" TEXT NOT NULL, + "telefon" TEXT NOT NULL, + "email" TEXT NOT NULL, + "noteDeutsch" INTEGER NOT NULL, + "noteMathe" INTEGER NOT NULL, + "sozialverhalten" TEXT NOT NULL, + "schulart" TEXT NOT NULL, + "motivation" TEXT NOT NULL, + "praktikumId" INTEGER NOT NULL, + "wunsch1Id" INTEGER NOT NULL, + "wunsch2Id" INTEGER NOT NULL, + "wunsch3Id" INTEGER NOT NULL, + "status" TEXT NOT NULL DEFAULT 'OFFEN', + "zugewiesenId" INTEGER NOT NULL, + "timestamp" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "Anmeldung_wunsch1Id_fkey" FOREIGN KEY ("wunsch1Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_wunsch2Id_fkey" FOREIGN KEY ("wunsch2Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_wunsch3Id_fkey" FOREIGN KEY ("wunsch3Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_zugewiesenId_fkey" FOREIGN KEY ("zugewiesenId") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE +); +INSERT INTO "new_Anmeldung" ("anrede", "email", "geburtsdatum", "hausnummer", "id", "motivation", "nachname", "noteDeutsch", "noteMathe", "ort", "plz", "praktikumId", "schulart", "sozialverhalten", "strasse", "telefon", "timestamp", "vorname", "wunsch1Id", "wunsch2Id", "wunsch3Id") SELECT "anrede", "email", "geburtsdatum", "hausnummer", "id", "motivation", "nachname", "noteDeutsch", "noteMathe", "ort", "plz", "praktikumId", "schulart", "sozialverhalten", "strasse", "telefon", "timestamp", "vorname", "wunsch1Id", "wunsch2Id", "wunsch3Id" FROM "Anmeldung"; +DROP TABLE "Anmeldung"; +ALTER TABLE "new_Anmeldung" RENAME TO "Anmeldung"; +CREATE UNIQUE INDEX "Anmeldung_email_key" ON "Anmeldung"("email"); +PRAGMA foreign_keys=ON; +PRAGMA defer_foreign_keys=OFF; diff --git a/prisma/migrations/20250617091214_make_zugewiesen_optional/migration.sql b/prisma/migrations/20250617091214_make_zugewiesen_optional/migration.sql new file mode 100644 index 0000000..9dcb3d5 --- /dev/null +++ b/prisma/migrations/20250617091214_make_zugewiesen_optional/migration.sql @@ -0,0 +1,38 @@ +-- RedefineTables +PRAGMA defer_foreign_keys=ON; +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_Anmeldung" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "anrede" TEXT NOT NULL, + "vorname" TEXT NOT NULL, + "nachname" TEXT NOT NULL, + "geburtsdatum" TEXT NOT NULL, + "strasse" TEXT NOT NULL, + "hausnummer" TEXT NOT NULL, + "ort" TEXT NOT NULL, + "plz" TEXT NOT NULL, + "telefon" TEXT NOT NULL, + "email" TEXT NOT NULL, + "noteDeutsch" INTEGER NOT NULL, + "noteMathe" INTEGER NOT NULL, + "sozialverhalten" TEXT NOT NULL, + "schulart" TEXT NOT NULL, + "motivation" TEXT NOT NULL, + "praktikumId" INTEGER NOT NULL, + "wunsch1Id" INTEGER NOT NULL, + "wunsch2Id" INTEGER NOT NULL, + "wunsch3Id" INTEGER NOT NULL, + "status" TEXT NOT NULL DEFAULT 'OFFEN', + "zugewiesenId" INTEGER, + "timestamp" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "Anmeldung_wunsch1Id_fkey" FOREIGN KEY ("wunsch1Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_wunsch2Id_fkey" FOREIGN KEY ("wunsch2Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_wunsch3Id_fkey" FOREIGN KEY ("wunsch3Id") REFERENCES "Dienststelle" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "Anmeldung_zugewiesenId_fkey" FOREIGN KEY ("zugewiesenId") REFERENCES "Dienststelle" ("id") ON DELETE SET NULL ON UPDATE CASCADE +); +INSERT INTO "new_Anmeldung" ("anrede", "email", "geburtsdatum", "hausnummer", "id", "motivation", "nachname", "noteDeutsch", "noteMathe", "ort", "plz", "praktikumId", "schulart", "sozialverhalten", "status", "strasse", "telefon", "timestamp", "vorname", "wunsch1Id", "wunsch2Id", "wunsch3Id", "zugewiesenId") SELECT "anrede", "email", "geburtsdatum", "hausnummer", "id", "motivation", "nachname", "noteDeutsch", "noteMathe", "ort", "plz", "praktikumId", "schulart", "sozialverhalten", "status", "strasse", "telefon", "timestamp", "vorname", "wunsch1Id", "wunsch2Id", "wunsch3Id", "zugewiesenId" FROM "Anmeldung"; +DROP TABLE "Anmeldung"; +ALTER TABLE "new_Anmeldung" RENAME TO "Anmeldung"; +CREATE UNIQUE INDEX "Anmeldung_email_key" ON "Anmeldung"("email"); +PRAGMA foreign_keys=ON; +PRAGMA defer_foreign_keys=OFF; diff --git a/prisma/praktika.db-journal b/prisma/praktika.db-journal new file mode 100644 index 0000000000000000000000000000000000000000..719ff1baf531f081ccac53be0b9964ce8441d221 GIT binary patch literal 21032 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 { try { await fs.unlink(filePath); } catch (err) { - console.warn(`Datei konnte nicht gelöscht werden: ${filePath}`, err.message); + console.warn( + `Datei konnte nicht gelöscht werden: ${filePath}`, + err instanceof Error ? err.message : String(err) + ); // Fehler ignorieren, Datei evtl. manuell entfernt } } @@ -61,4 +66,5 @@ export const DELETE: RequestHandler = async ({ cookies, url }) => { console.error('Fehler beim Löschen der Anmeldung:', error); return json({ error: 'Löschen fehlgeschlagen' }, { status: 500 }); } -}; \ No newline at end of file +}; + diff --git a/src/routes/api/anmelden/+server.ts b/src/routes/api/anmelden/+server.ts index d39dc57..c020b8a 100644 --- a/src/routes/api/anmelden/+server.ts +++ b/src/routes/api/anmelden/+server.ts @@ -54,7 +54,8 @@ export async function POST({ request }) { wunsch3Id: parseInt(get('wunsch3Id')), pdfs: { create: gespeichertePfade.map((pfad) => ({ pfad })) - } + }, + zugewiesenId: null } });