85 lines
2.6 KiB
SQL
85 lines
2.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Recognition" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"license" TEXT NOT NULL,
|
|
"licenseFormatted" TEXT,
|
|
"country" TEXT,
|
|
"confidence" INTEGER,
|
|
"timestampUTC" DATETIME NOT NULL,
|
|
"timestampLocal" DATETIME NOT NULL,
|
|
"cameraName" TEXT,
|
|
"classification" TEXT,
|
|
"imageFile" TEXT,
|
|
"plateFile" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"brand" TEXT,
|
|
"model" TEXT
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"username" TEXT NOT NULL,
|
|
"passwordHash" TEXT NOT NULL,
|
|
"isAdmin" BOOLEAN NOT NULL DEFAULT false,
|
|
"expiresAt" DATETIME,
|
|
"lastLogin" DATETIME
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CameraAccess" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"userId" TEXT NOT NULL,
|
|
"camera" TEXT NOT NULL,
|
|
"from" DATETIME,
|
|
"to" DATETIME,
|
|
CONSTRAINT "CameraAccess_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "NotificationRule" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"userId" TEXT NOT NULL,
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"plates" TEXT,
|
|
"brand" TEXT,
|
|
"model" TEXT,
|
|
"camera" TEXT,
|
|
"timeFrom" TEXT,
|
|
"timeTo" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "NotificationRule_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "NotificationRecipient" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"ruleId" INTEGER NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
CONSTRAINT "NotificationRecipient_ruleId_fkey" FOREIGN KEY ("ruleId") REFERENCES "NotificationRule" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UnsubscribeToken" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"ruleId" INTEGER,
|
|
"email" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"expiresAt" DATETIME NOT NULL,
|
|
CONSTRAINT "UnsubscribeToken_ruleId_fkey" FOREIGN KEY ("ruleId") REFERENCES "NotificationRule" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Recognition_license_timestampUTC_key" ON "Recognition"("license", "timestampUTC");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UnsubscribeToken_token_key" ON "UnsubscribeToken"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UnsubscribeToken_ruleId_email_idx" ON "UnsubscribeToken"("ruleId", "email");
|