54 lines
2.2 KiB
SQL
54 lines
2.2 KiB
SQL
-- Initial OKR SQLite schema generated from prisma/schema.prisma via prisma migrate diff.
|
|
CREATE TABLE "User" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"name" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"passwordHash" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
CREATE TABLE "Objective" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"ownerId" INTEGER NOT NULL,
|
|
"quarter" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'NOT_STARTED',
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Objective_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE "KeyResult" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"objectiveId" INTEGER NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"progress" INTEGER NOT NULL DEFAULT 0,
|
|
"startValue" INTEGER NOT NULL,
|
|
"targetValue" INTEGER NOT NULL,
|
|
"deadline" DATETIME NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "KeyResult_objectiveId_fkey" FOREIGN KEY ("objectiveId") REFERENCES "Objective" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE "ProgressUpdate" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"keyResultId" INTEGER NOT NULL,
|
|
"progress" INTEGER NOT NULL,
|
|
"comment" TEXT,
|
|
"createdById" INTEGER NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "ProgressUpdate_keyResultId_fkey" FOREIGN KEY ("keyResultId") REFERENCES "KeyResult" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
CREATE INDEX "Objective_ownerId_idx" ON "Objective"("ownerId");
|
|
CREATE INDEX "Objective_quarter_idx" ON "Objective"("quarter");
|
|
CREATE INDEX "Objective_status_idx" ON "Objective"("status");
|
|
CREATE INDEX "KeyResult_objectiveId_idx" ON "KeyResult"("objectiveId");
|