-- CreateTable CREATE TABLE "Role" ( "id" TEXT NOT NULL PRIMARY KEY, "code" TEXT NOT NULL, "name" TEXT NOT NULL, "description" TEXT NOT NULL DEFAULT '', "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" DATETIME NOT NULL ); -- CreateTable CREATE TABLE "Permission" ( "id" TEXT NOT NULL PRIMARY KEY, "roleCode" TEXT NOT NULL, "modelCode" TEXT NOT NULL, "action" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" DATETIME NOT NULL, CONSTRAINT "Permission_roleCode_fkey" FOREIGN KEY ("roleCode") REFERENCES "Role" ("code") ON DELETE CASCADE ON UPDATE CASCADE ); -- CreateTable CREATE TABLE "UserRole" ( "id" TEXT NOT NULL PRIMARY KEY, "userId" TEXT NOT NULL, "roleCode" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" DATETIME NOT NULL, CONSTRAINT "UserRole_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "UserRole_roleCode_fkey" FOREIGN KEY ("roleCode") REFERENCES "Role" ("code") ON DELETE CASCADE ON UPDATE CASCADE ); -- CreateIndex CREATE UNIQUE INDEX "Role_code_key" ON "Role"("code"); -- CreateIndex CREATE INDEX "Permission_modelCode_idx" ON "Permission"("modelCode"); -- CreateIndex CREATE INDEX "Permission_action_idx" ON "Permission"("action"); -- CreateIndex CREATE UNIQUE INDEX "Permission_roleCode_modelCode_action_key" ON "Permission"("roleCode", "modelCode", "action"); -- CreateIndex CREATE INDEX "UserRole_userId_idx" ON "UserRole"("userId"); -- CreateIndex CREATE UNIQUE INDEX "UserRole_userId_roleCode_key" ON "UserRole"("userId", "roleCode");