656 lines
21 KiB
SQL
656 lines
21 KiB
SQL
-- CreateSchema
|
|
CREATE SCHEMA IF NOT EXISTS "public";
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"password" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Article" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"date" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Article_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Strategy" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"data" JSONB NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Strategy_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Indicator" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"groupName" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL DEFAULT '',
|
|
"unit" TEXT NOT NULL DEFAULT '',
|
|
"source" TEXT NOT NULL DEFAULT '',
|
|
"frequency" TEXT NOT NULL DEFAULT 'month',
|
|
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Indicator_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "IndicatorPoint" (
|
|
"id" SERIAL NOT NULL,
|
|
"indicatorId" INTEGER NOT NULL,
|
|
"period" TEXT NOT NULL,
|
|
"value" DOUBLE PRECISION NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "IndicatorPoint_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "News" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"summary" TEXT NOT NULL DEFAULT '',
|
|
"content" TEXT,
|
|
"source" TEXT NOT NULL DEFAULT '',
|
|
"url" TEXT NOT NULL DEFAULT '',
|
|
"publishedAt" TIMESTAMP(3) NOT NULL,
|
|
"impactRank" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "News_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Alert" (
|
|
"id" SERIAL NOT NULL,
|
|
"indicatorName" TEXT NOT NULL,
|
|
"period" TEXT NOT NULL,
|
|
"valueA" DOUBLE PRECISION NOT NULL,
|
|
"valueB" DOUBLE PRECISION NOT NULL,
|
|
"sourceA" TEXT NOT NULL,
|
|
"sourceB" TEXT NOT NULL,
|
|
"diff" DOUBLE PRECISION NOT NULL,
|
|
"diffRatio" DOUBLE PRECISION NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Alert_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServerNode" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"cpuName" TEXT NOT NULL DEFAULT '',
|
|
"os" TEXT NOT NULL DEFAULT '',
|
|
"region" TEXT NOT NULL DEFAULT '',
|
|
"memTotal" BIGINT NOT NULL DEFAULT 0,
|
|
"diskTotal" BIGINT NOT NULL DEFAULT 0,
|
|
"cpuCores" INTEGER NOT NULL DEFAULT 0,
|
|
"cpuUsage" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"ramUsed" BIGINT NOT NULL DEFAULT 0,
|
|
"swapUsed" BIGINT NOT NULL DEFAULT 0,
|
|
"load1" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"load5" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"load15" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"diskUsed" BIGINT NOT NULL DEFAULT 0,
|
|
"netIn" BIGINT NOT NULL DEFAULT 0,
|
|
"netOut" BIGINT NOT NULL DEFAULT 0,
|
|
"uptime" BIGINT NOT NULL DEFAULT 0,
|
|
"process" INTEGER NOT NULL DEFAULT 0,
|
|
"connections" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'unknown',
|
|
"recordedAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ServerNode_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServerNodeHistory" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"period" TIMESTAMP(3) NOT NULL,
|
|
"cpu" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"ram" BIGINT NOT NULL DEFAULT 0,
|
|
"load" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"disk" BIGINT NOT NULL DEFAULT 0,
|
|
"netIn" BIGINT NOT NULL DEFAULT 0,
|
|
"netOut" BIGINT NOT NULL DEFAULT 0,
|
|
"process" INTEGER NOT NULL DEFAULT 0,
|
|
"connections" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ServerNodeHistory_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServiceCheck" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"url" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'unknown',
|
|
"latencyMs" INTEGER NOT NULL DEFAULT 0,
|
|
"message" TEXT NOT NULL DEFAULT '',
|
|
"lastCheckAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ServiceCheck_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Econ_SowInventory" (
|
|
"id" SERIAL NOT NULL,
|
|
"month" TEXT NOT NULL,
|
|
"inventory" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Econ_SowInventory_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ScraperCache" (
|
|
"id" SERIAL NOT NULL,
|
|
"scraperName" TEXT NOT NULL,
|
|
"lastDataHash" TEXT,
|
|
"lastUpdateAt" TIMESTAMP(3) NOT NULL,
|
|
"metadata" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ScraperCache_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "OilPriceHistory" (
|
|
"id" SERIAL NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL,
|
|
"province" TEXT NOT NULL,
|
|
"fuel" TEXT NOT NULL,
|
|
"price" DOUBLE PRECISION NOT NULL,
|
|
"source" TEXT NOT NULL DEFAULT 'apizero',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "OilPriceHistory_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MihomeAccount" (
|
|
"id" SERIAL NOT NULL,
|
|
"key" TEXT NOT NULL DEFAULT 'default',
|
|
"userId" TEXT NOT NULL DEFAULT '',
|
|
"status" TEXT NOT NULL DEFAULT 'unknown',
|
|
"lastError" TEXT NOT NULL DEFAULT '',
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "MihomeAccount_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MihomeHome" (
|
|
"id" SERIAL NOT NULL,
|
|
"homeId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MihomeHome_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MihomeDevice" (
|
|
"id" SERIAL NOT NULL,
|
|
"did" TEXT NOT NULL,
|
|
"homeId" TEXT NOT NULL,
|
|
"model" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"alias" TEXT,
|
|
"tempSiid" INTEGER NOT NULL,
|
|
"tempPiid" INTEGER NOT NULL,
|
|
"humSiid" INTEGER NOT NULL,
|
|
"humPiid" INTEGER NOT NULL,
|
|
"battSiid" INTEGER NOT NULL,
|
|
"battPiid" INTEGER NOT NULL,
|
|
"battery" INTEGER,
|
|
"batteryAt" TIMESTAMP(3),
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastSyncAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MihomeDevice_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MihomeEnvSample" (
|
|
"id" SERIAL NOT NULL,
|
|
"deviceId" INTEGER NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL,
|
|
"temperature" DOUBLE PRECISION,
|
|
"humidity" DOUBLE PRECISION,
|
|
"temperatureAvg" DOUBLE PRECISION,
|
|
"humidityAvg" DOUBLE PRECISION,
|
|
"temperatureMin" DOUBLE PRECISION,
|
|
"temperatureMax" DOUBLE PRECISION,
|
|
"humidityMin" DOUBLE PRECISION,
|
|
"humidityMax" DOUBLE PRECISION,
|
|
"origin" TEXT NOT NULL DEFAULT 'live',
|
|
"sampledAt" TIMESTAMP(3),
|
|
"raw" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MihomeEnvSample_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MihomeEnvHour" (
|
|
"id" SERIAL NOT NULL,
|
|
"deviceId" INTEGER NOT NULL,
|
|
"hour" TIMESTAMP(3) NOT NULL,
|
|
"temperatureAvg" DOUBLE PRECISION,
|
|
"humidityAvg" DOUBLE PRECISION,
|
|
"raw" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MihomeEnvHour_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Habit" (
|
|
"id" SERIAL NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"period" TEXT NOT NULL DEFAULT 'day',
|
|
"target" INTEGER NOT NULL DEFAULT 1,
|
|
"color" TEXT NOT NULL DEFAULT '#1677ff',
|
|
"icon" TEXT NOT NULL DEFAULT '',
|
|
"note" TEXT NOT NULL DEFAULT '',
|
|
"archived" BOOLEAN NOT NULL DEFAULT false,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Habit_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CheckIn" (
|
|
"id" SERIAL NOT NULL,
|
|
"habitId" INTEGER NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"date" VARCHAR(10) NOT NULL,
|
|
"seq" INTEGER NOT NULL DEFAULT 1,
|
|
"note" TEXT NOT NULL DEFAULT '',
|
|
"source" TEXT NOT NULL DEFAULT 'user',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "CheckIn_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CheckList" (
|
|
"id" SERIAL NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"scene" TEXT NOT NULL DEFAULT '',
|
|
"note" TEXT NOT NULL DEFAULT '',
|
|
"archived" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "CheckList_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CheckListItem" (
|
|
"id" SERIAL NOT NULL,
|
|
"listId" INTEGER NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"note" TEXT NOT NULL DEFAULT '',
|
|
"done" BOOLEAN NOT NULL DEFAULT false,
|
|
"doneAt" TIMESTAMP(3),
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "CheckListItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CheckListTemplate" (
|
|
"id" SERIAL NOT NULL,
|
|
"userId" INTEGER,
|
|
"name" TEXT NOT NULL,
|
|
"scene" TEXT NOT NULL DEFAULT '',
|
|
"items" JSONB NOT NULL,
|
|
"builtin" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "CheckListTemplate_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Project" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"code" VARCHAR(8) NOT NULL,
|
|
"name" VARCHAR(50) NOT NULL,
|
|
"ownerId" INTEGER NOT NULL,
|
|
"isPersonal" BOOLEAN NOT NULL DEFAULT false,
|
|
"archived" BOOLEAN NOT NULL DEFAULT false,
|
|
"notes" JSONB NOT NULL DEFAULT '[]',
|
|
"taskKinds" JSONB,
|
|
"icon" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ProjectMember" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"projectId" INTEGER NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"permission" TEXT NOT NULL DEFAULT 'member',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ProjectMember_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "BoardColumn" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"projectId" INTEGER NOT NULL,
|
|
"name" VARCHAR(20) NOT NULL,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"boundStatus" VARCHAR(8),
|
|
"retention" VARCHAR(8) NOT NULL DEFAULT 'forever',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "BoardColumn_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Task" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"projectId" INTEGER NOT NULL,
|
|
"columnId" INTEGER NOT NULL,
|
|
"parentId" INTEGER,
|
|
"title" VARCHAR(200) NOT NULL,
|
|
"description" TEXT NOT NULL DEFAULT '',
|
|
"kind" VARCHAR(20),
|
|
"markDate" TIMESTAMP(3),
|
|
"status" VARCHAR(8) NOT NULL DEFAULT 'todo',
|
|
"doneAt" TIMESTAMP(3),
|
|
"assigneeId" INTEGER,
|
|
"creatorId" INTEGER NOT NULL,
|
|
"extras" JSONB NOT NULL DEFAULT '[]',
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"number" INTEGER,
|
|
|
|
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TaskMember" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"taskId" INTEGER NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "TaskMember_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TaskTag" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" VARCHAR(36) NOT NULL,
|
|
"taskId" INTEGER NOT NULL,
|
|
"name" VARCHAR(20) NOT NULL,
|
|
|
|
CONSTRAINT "TaskTag_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Article_slug_key" ON "Article"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Indicator_name_key" ON "Indicator"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "IndicatorPoint_indicatorId_period_key" ON "IndicatorPoint"("indicatorId", "period");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "News_publishedAt_idx" ON "News"("publishedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "News_title_publishedAt_key" ON "News"("title", "publishedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Alert_createdAt_idx" ON "Alert"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ServerNode_uuid_key" ON "ServerNode"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ServerNodeHistory_uuid_period_idx" ON "ServerNodeHistory"("uuid", "period");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ServerNodeHistory_uuid_period_key" ON "ServerNodeHistory"("uuid", "period");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ServiceCheck_name_key" ON "ServiceCheck"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Econ_SowInventory_month_key" ON "Econ_SowInventory"("month");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ScraperCache_scraperName_key" ON "ScraperCache"("scraperName");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OilPriceHistory_province_fuel_date_idx" ON "OilPriceHistory"("province", "fuel", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "OilPriceHistory_date_province_fuel_key" ON "OilPriceHistory"("date", "province", "fuel");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MihomeAccount_key_key" ON "MihomeAccount"("key");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MihomeHome_homeId_key" ON "MihomeHome"("homeId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MihomeDevice_did_key" ON "MihomeDevice"("did");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "MihomeEnvSample_deviceId_date_idx" ON "MihomeEnvSample"("deviceId", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MihomeEnvSample_deviceId_date_key" ON "MihomeEnvSample"("deviceId", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "MihomeEnvHour_deviceId_hour_idx" ON "MihomeEnvHour"("deviceId", "hour");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MihomeEnvHour_deviceId_hour_key" ON "MihomeEnvHour"("deviceId", "hour");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Habit_userId_archived_sortOrder_idx" ON "Habit"("userId", "archived", "sortOrder");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CheckIn_userId_date_idx" ON "CheckIn"("userId", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CheckIn_habitId_date_idx" ON "CheckIn"("habitId", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "CheckIn_habitId_date_seq_key" ON "CheckIn"("habitId", "date", "seq");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CheckList_userId_archived_idx" ON "CheckList"("userId", "archived");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CheckListItem_listId_sortOrder_idx" ON "CheckListItem"("listId", "sortOrder");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CheckListTemplate_userId_builtin_idx" ON "CheckListTemplate"("userId", "builtin");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Project_uuid_key" ON "Project"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Project_code_key" ON "Project"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Project_ownerId_idx" ON "Project"("ownerId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Project_archived_idx" ON "Project"("archived");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ProjectMember_uuid_key" ON "ProjectMember"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ProjectMember_userId_idx" ON "ProjectMember"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ProjectMember_projectId_userId_key" ON "ProjectMember"("projectId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "BoardColumn_uuid_key" ON "BoardColumn"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "BoardColumn_projectId_sortOrder_idx" ON "BoardColumn"("projectId", "sortOrder");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "BoardColumn_projectId_name_key" ON "BoardColumn"("projectId", "name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Task_uuid_key" ON "Task"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Task_projectId_columnId_idx" ON "Task"("projectId", "columnId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Task_projectId_status_idx" ON "Task"("projectId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Task_parentId_idx" ON "Task"("parentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Task_projectId_doneAt_idx" ON "Task"("projectId", "doneAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Task_projectId_number_key" ON "Task"("projectId", "number");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TaskMember_uuid_key" ON "TaskMember"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TaskMember_taskId_userId_key" ON "TaskMember"("taskId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TaskTag_uuid_key" ON "TaskTag"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TaskTag_taskId_idx" ON "TaskTag"("taskId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "IndicatorPoint" ADD CONSTRAINT "IndicatorPoint_indicatorId_fkey" FOREIGN KEY ("indicatorId") REFERENCES "Indicator"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MihomeDevice" ADD CONSTRAINT "MihomeDevice_homeId_fkey" FOREIGN KEY ("homeId") REFERENCES "MihomeHome"("homeId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MihomeEnvSample" ADD CONSTRAINT "MihomeEnvSample_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "MihomeDevice"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MihomeEnvHour" ADD CONSTRAINT "MihomeEnvHour_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "MihomeDevice"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Habit" ADD CONSTRAINT "Habit_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CheckIn" ADD CONSTRAINT "CheckIn_habitId_fkey" FOREIGN KEY ("habitId") REFERENCES "Habit"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CheckIn" ADD CONSTRAINT "CheckIn_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CheckList" ADD CONSTRAINT "CheckList_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CheckListItem" ADD CONSTRAINT "CheckListItem_listId_fkey" FOREIGN KEY ("listId") REFERENCES "CheckList"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CheckListTemplate" ADD CONSTRAINT "CheckListTemplate_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Project" ADD CONSTRAINT "Project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "BoardColumn" ADD CONSTRAINT "BoardColumn_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_columnId_fkey" FOREIGN KEY ("columnId") REFERENCES "BoardColumn"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_assigneeId_fkey" FOREIGN KEY ("assigneeId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Task" ADD CONSTRAINT "Task_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TaskMember" ADD CONSTRAINT "TaskMember_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TaskMember" ADD CONSTRAINT "TaskMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TaskTag" ADD CONSTRAINT "TaskTag_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|