45 lines
1.5 KiB
SQL
45 lines
1.5 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Device" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"ipAddress" TEXT NOT NULL,
|
|
"port" INTEGER NOT NULL DEFAULT 80,
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastSeenAt" DATETIME,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Group" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GroupDevice" (
|
|
"groupId" TEXT NOT NULL,
|
|
"deviceId" TEXT NOT NULL,
|
|
|
|
PRIMARY KEY ("groupId", "deviceId"),
|
|
CONSTRAINT "GroupDevice_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "GroupDevice_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Schedule" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"groupId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"cronExpression" TEXT NOT NULL,
|
|
"timezone" TEXT NOT NULL DEFAULT 'Europe/London',
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"actionPayload" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Schedule_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|