feat: Grundgeruest fertigstellen (Backend/Frontend/K8s)
Backend: Prisma-Client auf prisma-client-js + Driver-Adapter (@prisma/adapter-pg) umgestellt (Prisma 7 verlangt Adapter, ESM-Client brach an Jest), erste Migration erzeugt und angewendet, /api/v1 Versioning, Swagger unter /api/v1/docs, Helmet, globale ValidationPipe, PrismaModule, HealthModule (/health, /health/ready mit DB-Check), tsconfig.build.json Root-Dir-Fix (dist/main.js statt dist/src/main.js). Frontend: Tailwind v4 + shadcn/ui initialisiert, TanStack Query Provider, PWA Manifest (app/manifest.ts), Vitest + Testing Library Setup, next.config output standalone. deploy/k8s: Dockerfiles (Backend/Frontend, Multi-Stage) + Deployment/Service/ Ingress/ConfigMap/Secret-Vorlagen fuer beide Projekte. Lokale Dev-/Test-Postgres-Instanz unter ApiCore-Backend/.devdb angelegt (eigene Rolle, kein bestehendes Passwort noetig), .env/.env.test lokal befuellt. Lint, Typecheck, Tests und Build sind fuer Backend und Frontend gruen; Server wurde lokal gestartet und /health, /health/ready, /api/v1/docs manuell verifiziert.
This commit is contained in:
1 parent
c4a2d0648e
commit
eae3fea957
57 files changed
+15114
-35
No files matched your search
@@ -0,0 +1,640 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Role" AS ENUM ('ADMIN', 'BEEKEEPER', 'STAFF', 'READONLY', 'API_CLIENT');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AuditAction" AS ENUM ('CREATE', 'UPDATE', 'DEACTIVATE', 'DELETE');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "ApiaryStatus" AS ENUM ('ACTIVE', 'INACTIVE');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "ColonyType" AS ENUM ('PRODUCTION_COLONY', 'NUCLEUS_COLONY', 'YOUNG_COLONY', 'CARETAKER_COLONY', 'MATING_NUCLEUS', 'RESERVE_COLONY');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "ColonyStatus" AS ENUM ('ACTIVE', 'WEAK', 'CONSPICUOUS', 'QUEENLESS', 'DISSOLVED', 'SOLD', 'DECEASED', 'MERGED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "LineageType" AS ENUM ('SPLIT', 'MERGE');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "QueenStatus" AS ENUM ('ACTIVE', 'RESERVE', 'UNMATED', 'MATED', 'LOST', 'REPLACED', 'SOLD', 'DECEASED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TaskPriority" AS ENUM ('LOW', 'NORMAL', 'HIGH', 'URGENT');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TaskStatus" AS ENUM ('OPEN', 'IN_PROGRESS', 'DONE', 'CANCELLED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TaskRelatedType" AS ENUM ('COLONY', 'APIARY', 'QUEEN', 'HONEY_BATCH', 'STORAGE', 'GENERAL');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "VarroaMethod" AS ENUM ('NATURAL_MITE_FALL', 'POWDERED_SUGAR', 'WASHING_METHOD', 'DRONE_BROOD_CONTROL');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "FeedType" AS ENUM ('SUGAR_WATER', 'FEED_SYRUP', 'FEED_PASTE', 'OWN_HONEY', 'OTHER');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "HoneyBatchStatus" AS ENUM ('RAW', 'EXTRACTED', 'CLARIFIED', 'CREAMED', 'STORED', 'BOTTLED', 'SOLD', 'CONSUMED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "StorageContainerStatus" AS ENUM ('EMPTY', 'FILLED', 'CLEANING', 'OUT_OF_SERVICE');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "StockCategory" AS ENUM ('HONEY', 'CONSUMABLE', 'EQUIPMENT_MATERIAL');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "StockMovementType" AS ENUM ('IN', 'OUT', 'TRANSFER', 'ADJUSTMENT');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"passwordHash" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"role" "Role" NOT NULL DEFAULT 'STAFF',
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deactivatedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "RefreshToken" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"tokenHash" TEXT NOT NULL,
|
||||
"expiresAt" TIMESTAMP(3) NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"revokedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "RefreshToken_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "AuditLog" (
|
||||
"id" TEXT NOT NULL,
|
||||
"entityType" TEXT NOT NULL,
|
||||
"entityId" TEXT NOT NULL,
|
||||
"action" "AuditAction" NOT NULL,
|
||||
"userId" TEXT,
|
||||
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"beforeData" JSONB,
|
||||
"afterData" JSONB,
|
||||
|
||||
CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Apiary" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"location" TEXT,
|
||||
"latitude" DOUBLE PRECISION,
|
||||
"longitude" DOUBLE PRECISION,
|
||||
"address" TEXT,
|
||||
"status" "ApiaryStatus" NOT NULL DEFAULT 'ACTIVE',
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deactivatedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "Apiary_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Colony" (
|
||||
"id" TEXT NOT NULL,
|
||||
"code" TEXT NOT NULL,
|
||||
"apiaryId" TEXT NOT NULL,
|
||||
"hiveType" TEXT,
|
||||
"originText" TEXT,
|
||||
"colonyType" "ColonyType" NOT NULL,
|
||||
"status" "ColonyStatus" NOT NULL DEFAULT 'ACTIVE',
|
||||
"strength" INTEGER,
|
||||
"broodStatus" TEXT,
|
||||
"feedStatus" TEXT,
|
||||
"healthStatus" TEXT,
|
||||
"notes" TEXT,
|
||||
"currentQueenId" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deactivatedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "Colony_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ColonyApiaryHistory" (
|
||||
"id" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"apiaryId" TEXT NOT NULL,
|
||||
"movedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"movedByUserId" TEXT,
|
||||
"notes" TEXT,
|
||||
|
||||
CONSTRAINT "ColonyApiaryHistory_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ColonyLineage" (
|
||||
"id" TEXT NOT NULL,
|
||||
"type" "LineageType" NOT NULL,
|
||||
"fromColonyId" TEXT NOT NULL,
|
||||
"toColonyId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "ColonyLineage_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Queen" (
|
||||
"id" TEXT NOT NULL,
|
||||
"code" TEXT NOT NULL,
|
||||
"hatchYear" INTEGER,
|
||||
"breed" TEXT,
|
||||
"origin" TEXT,
|
||||
"breeder" TEXT,
|
||||
"markingColor" TEXT,
|
||||
"markingNumber" TEXT,
|
||||
"matingType" TEXT,
|
||||
"matingStatus" TEXT,
|
||||
"inseminationData" TEXT,
|
||||
"motherLine" TEXT,
|
||||
"fatherLine" TEXT,
|
||||
"status" "QueenStatus" NOT NULL DEFAULT 'ACTIVE',
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deactivatedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "Queen_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "QueenColonyHistory" (
|
||||
"id" TEXT NOT NULL,
|
||||
"queenId" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"startDate" TIMESTAMP(3) NOT NULL,
|
||||
"endDate" TIMESTAMP(3),
|
||||
"notes" TEXT,
|
||||
|
||||
CONSTRAINT "QueenColonyHistory_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Inspection" (
|
||||
"id" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"weather" TEXT,
|
||||
"temperature" DOUBLE PRECISION,
|
||||
"colonyStrength" INTEGER,
|
||||
"broodAmount" TEXT,
|
||||
"broodPattern" INTEGER,
|
||||
"openBroodPresent" BOOLEAN,
|
||||
"cappedBroodPresent" BOOLEAN,
|
||||
"eggsPresent" BOOLEAN,
|
||||
"queenSeen" BOOLEAN,
|
||||
"queenCellsPresent" BOOLEAN,
|
||||
"swarmMood" INTEGER,
|
||||
"gentleness" INTEGER,
|
||||
"combBehavior" INTEGER,
|
||||
"feedStatus" TEXT,
|
||||
"honeySuperStatus" TEXT,
|
||||
"healthIssues" TEXT,
|
||||
"varroaIssues" TEXT,
|
||||
"measures" TEXT,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Inspection_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Task" (
|
||||
"id" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"priority" "TaskPriority" NOT NULL DEFAULT 'NORMAL',
|
||||
"dueDate" TIMESTAMP(3),
|
||||
"status" "TaskStatus" NOT NULL DEFAULT 'OPEN',
|
||||
"assignedUserId" TEXT,
|
||||
"createdByUserId" TEXT,
|
||||
"relatedType" "TaskRelatedType" NOT NULL DEFAULT 'GENERAL',
|
||||
"relatedId" TEXT,
|
||||
"sourceInspectionId" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"completedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "VarroaMeasurement" (
|
||||
"id" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"method" "VarroaMethod" NOT NULL,
|
||||
"durationMinutes" INTEGER,
|
||||
"miteCount" INTEGER,
|
||||
"calculatedValue" DOUBLE PRECISION,
|
||||
"assessment" TEXT,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "VarroaMeasurement_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Treatment" (
|
||||
"id" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"startDate" TIMESTAMP(3),
|
||||
"endDate" TIMESTAMP(3),
|
||||
"product" TEXT NOT NULL,
|
||||
"activeIngredient" TEXT,
|
||||
"amount" TEXT,
|
||||
"method" TEXT,
|
||||
"reason" TEXT,
|
||||
"batchNumber" TEXT,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Treatment_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Feeding" (
|
||||
"id" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"feedType" "FeedType" NOT NULL,
|
||||
"product" TEXT,
|
||||
"amount" DOUBLE PRECISION NOT NULL,
|
||||
"unit" TEXT NOT NULL,
|
||||
"batchNumber" TEXT,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Feeding_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Harvest" (
|
||||
"id" TEXT NOT NULL,
|
||||
"apiaryId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"honeyType" TEXT,
|
||||
"honeySuperCount" INTEGER,
|
||||
"grossWeight" DOUBLE PRECISION,
|
||||
"netWeight" DOUBLE PRECISION,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Harvest_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "HarvestColony" (
|
||||
"id" TEXT NOT NULL,
|
||||
"harvestId" TEXT NOT NULL,
|
||||
"colonyId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "HarvestColony_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Extraction" (
|
||||
"id" TEXT NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"amount" DOUBLE PRECISION,
|
||||
"room" TEXT,
|
||||
"waterContent" DOUBLE PRECISION,
|
||||
"temperature" DOUBLE PRECISION,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Extraction_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ExtractionHarvest" (
|
||||
"id" TEXT NOT NULL,
|
||||
"extractionId" TEXT NOT NULL,
|
||||
"harvestId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "ExtractionHarvest_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "HoneyBatch" (
|
||||
"id" TEXT NOT NULL,
|
||||
"batchNumber" TEXT NOT NULL,
|
||||
"extractionId" TEXT NOT NULL,
|
||||
"honeyType" TEXT,
|
||||
"amount" DOUBLE PRECISION,
|
||||
"waterContent" DOUBLE PRECISION,
|
||||
"storageContainerId" TEXT,
|
||||
"status" "HoneyBatchStatus" NOT NULL DEFAULT 'RAW',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "HoneyBatch_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "HoneyMeasurement" (
|
||||
"id" TEXT NOT NULL,
|
||||
"honeyBatchId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"waterContent" DOUBLE PRECISION NOT NULL,
|
||||
"measuredAt" TIMESTAMP(3) NOT NULL,
|
||||
"device" TEXT,
|
||||
"temperature" DOUBLE PRECISION,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "HoneyMeasurement_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "StorageContainer" (
|
||||
"id" TEXT NOT NULL,
|
||||
"code" TEXT NOT NULL,
|
||||
"containerType" TEXT,
|
||||
"capacity" DOUBLE PRECISION,
|
||||
"currentAmount" DOUBLE PRECISION,
|
||||
"location" TEXT,
|
||||
"status" "StorageContainerStatus" NOT NULL DEFAULT 'EMPTY',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "StorageContainer_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "StockItem" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"category" "StockCategory" NOT NULL,
|
||||
"unit" TEXT NOT NULL,
|
||||
"quantity" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
"minThreshold" DOUBLE PRECISION,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "StockItem_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "StockMovement" (
|
||||
"id" TEXT NOT NULL,
|
||||
"stockItemId" TEXT NOT NULL,
|
||||
"type" "StockMovementType" NOT NULL,
|
||||
"quantity" DOUBLE PRECISION NOT NULL,
|
||||
"date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"userId" TEXT,
|
||||
"relatedType" TEXT,
|
||||
"relatedId" TEXT,
|
||||
"notes" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "StockMovement_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "User_role_idx" ON "User"("role");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "RefreshToken_tokenHash_key" ON "RefreshToken"("tokenHash");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "RefreshToken_userId_idx" ON "RefreshToken"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "AuditLog_entityType_entityId_idx" ON "AuditLog"("entityType", "entityId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "AuditLog_timestamp_idx" ON "AuditLog"("timestamp");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Apiary_status_idx" ON "Apiary"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Colony_code_key" ON "Colony"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Colony_currentQueenId_key" ON "Colony"("currentQueenId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Colony_apiaryId_idx" ON "Colony"("apiaryId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Colony_status_idx" ON "Colony"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ColonyApiaryHistory_colonyId_idx" ON "ColonyApiaryHistory"("colonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ColonyApiaryHistory_apiaryId_idx" ON "ColonyApiaryHistory"("apiaryId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ColonyLineage_fromColonyId_idx" ON "ColonyLineage"("fromColonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ColonyLineage_toColonyId_idx" ON "ColonyLineage"("toColonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Queen_code_key" ON "Queen"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Queen_status_idx" ON "Queen"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "QueenColonyHistory_queenId_idx" ON "QueenColonyHistory"("queenId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "QueenColonyHistory_colonyId_idx" ON "QueenColonyHistory"("colonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Inspection_colonyId_date_idx" ON "Inspection"("colonyId", "date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Task_status_dueDate_idx" ON "Task"("status", "dueDate");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Task_relatedType_relatedId_idx" ON "Task"("relatedType", "relatedId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "VarroaMeasurement_colonyId_date_idx" ON "VarroaMeasurement"("colonyId", "date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Treatment_colonyId_date_idx" ON "Treatment"("colonyId", "date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Feeding_colonyId_date_idx" ON "Feeding"("colonyId", "date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Harvest_apiaryId_date_idx" ON "Harvest"("apiaryId", "date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "HarvestColony_colonyId_idx" ON "HarvestColony"("colonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "HarvestColony_harvestId_colonyId_key" ON "HarvestColony"("harvestId", "colonyId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Extraction_date_idx" ON "Extraction"("date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ExtractionHarvest_harvestId_idx" ON "ExtractionHarvest"("harvestId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "ExtractionHarvest_extractionId_harvestId_key" ON "ExtractionHarvest"("extractionId", "harvestId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "HoneyBatch_batchNumber_key" ON "HoneyBatch"("batchNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "HoneyBatch_status_idx" ON "HoneyBatch"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "HoneyBatch_extractionId_idx" ON "HoneyBatch"("extractionId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "HoneyMeasurement_honeyBatchId_idx" ON "HoneyMeasurement"("honeyBatchId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "StorageContainer_code_key" ON "StorageContainer"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "StorageContainer_status_idx" ON "StorageContainer"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "StockItem_category_idx" ON "StockItem"("category");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "StockMovement_stockItemId_date_idx" ON "StockMovement"("stockItemId", "date");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "RefreshToken" ADD CONSTRAINT "RefreshToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "AuditLog" ADD CONSTRAINT "AuditLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Colony" ADD CONSTRAINT "Colony_apiaryId_fkey" FOREIGN KEY ("apiaryId") REFERENCES "Apiary"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Colony" ADD CONSTRAINT "Colony_currentQueenId_fkey" FOREIGN KEY ("currentQueenId") REFERENCES "Queen"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ColonyApiaryHistory" ADD CONSTRAINT "ColonyApiaryHistory_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ColonyApiaryHistory" ADD CONSTRAINT "ColonyApiaryHistory_apiaryId_fkey" FOREIGN KEY ("apiaryId") REFERENCES "Apiary"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ColonyApiaryHistory" ADD CONSTRAINT "ColonyApiaryHistory_movedByUserId_fkey" FOREIGN KEY ("movedByUserId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ColonyLineage" ADD CONSTRAINT "ColonyLineage_fromColonyId_fkey" FOREIGN KEY ("fromColonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ColonyLineage" ADD CONSTRAINT "ColonyLineage_toColonyId_fkey" FOREIGN KEY ("toColonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "QueenColonyHistory" ADD CONSTRAINT "QueenColonyHistory_queenId_fkey" FOREIGN KEY ("queenId") REFERENCES "Queen"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "QueenColonyHistory" ADD CONSTRAINT "QueenColonyHistory_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Inspection" ADD CONSTRAINT "Inspection_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Inspection" ADD CONSTRAINT "Inspection_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Task" ADD CONSTRAINT "Task_assignedUserId_fkey" FOREIGN KEY ("assignedUserId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Task" ADD CONSTRAINT "Task_createdByUserId_fkey" FOREIGN KEY ("createdByUserId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Task" ADD CONSTRAINT "Task_sourceInspectionId_fkey" FOREIGN KEY ("sourceInspectionId") REFERENCES "Inspection"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "VarroaMeasurement" ADD CONSTRAINT "VarroaMeasurement_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "VarroaMeasurement" ADD CONSTRAINT "VarroaMeasurement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Treatment" ADD CONSTRAINT "Treatment_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Treatment" ADD CONSTRAINT "Treatment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Feeding" ADD CONSTRAINT "Feeding_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Feeding" ADD CONSTRAINT "Feeding_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Harvest" ADD CONSTRAINT "Harvest_apiaryId_fkey" FOREIGN KEY ("apiaryId") REFERENCES "Apiary"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Harvest" ADD CONSTRAINT "Harvest_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HarvestColony" ADD CONSTRAINT "HarvestColony_harvestId_fkey" FOREIGN KEY ("harvestId") REFERENCES "Harvest"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HarvestColony" ADD CONSTRAINT "HarvestColony_colonyId_fkey" FOREIGN KEY ("colonyId") REFERENCES "Colony"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Extraction" ADD CONSTRAINT "Extraction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ExtractionHarvest" ADD CONSTRAINT "ExtractionHarvest_extractionId_fkey" FOREIGN KEY ("extractionId") REFERENCES "Extraction"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ExtractionHarvest" ADD CONSTRAINT "ExtractionHarvest_harvestId_fkey" FOREIGN KEY ("harvestId") REFERENCES "Harvest"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HoneyBatch" ADD CONSTRAINT "HoneyBatch_extractionId_fkey" FOREIGN KEY ("extractionId") REFERENCES "Extraction"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HoneyBatch" ADD CONSTRAINT "HoneyBatch_storageContainerId_fkey" FOREIGN KEY ("storageContainerId") REFERENCES "StorageContainer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HoneyMeasurement" ADD CONSTRAINT "HoneyMeasurement_honeyBatchId_fkey" FOREIGN KEY ("honeyBatchId") REFERENCES "HoneyBatch"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "HoneyMeasurement" ADD CONSTRAINT "HoneyMeasurement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StockMovement" ADD CONSTRAINT "StockMovement_stockItemId_fkey" FOREIGN KEY ("stockItemId") REFERENCES "StockItem"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StockMovement" ADD CONSTRAINT "StockMovement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
@@ -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"
|
||||
@@ -4,7 +4,7 @@
|
||||
// keine Freitextfelder, damit die Rückverfolgbarkeitskette (Abschnitt 16, 29) abfragbar bleibt.
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client"
|
||||
provider = "prisma-client-js"
|
||||
output = "../generated/prisma"
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user