54 lines
1.6 KiB
SQL
54 lines
1.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"azureAdUserId" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"displayName" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "FileNode" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"size" BIGINT,
|
|
"isFolder" BOOLEAN NOT NULL DEFAULT false,
|
|
"oneDriveId" TEXT,
|
|
"path" TEXT NOT NULL,
|
|
"orderIndex" INTEGER NOT NULL DEFAULT 0,
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
"description" TEXT,
|
|
"ownerId" TEXT NOT NULL,
|
|
"parentId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "FileNode_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_azureAdUserId_key" ON "User"("azureAdUserId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "FileNode_oneDriveId_key" ON "FileNode"("oneDriveId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FileNode_parentId_idx" ON "FileNode"("parentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FileNode_orderIndex_idx" ON "FileNode"("orderIndex");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "FileNode_ownerId_path_key" ON "FileNode"("ownerId", "path");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "FileNode" ADD CONSTRAINT "FileNode_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "FileNode" ADD CONSTRAINT "FileNode_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "FileNode"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|