2025-06-28 15:16:06 +08:00

123 lines
3.7 KiB
SQL

-- CreateTable
CREATE TABLE "hosts" (
"id" TEXT NOT NULL,
"hostname" TEXT NOT NULL,
"lastUpdate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "hosts_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "records" (
"id" TEXT NOT NULL,
"hostname" TEXT NOT NULL,
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "records_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "windows" (
"id" TEXT NOT NULL,
"recordId" TEXT NOT NULL,
"title" TEXT NOT NULL,
"path" TEXT NOT NULL,
"memory" INTEGER NOT NULL,
CONSTRAINT "windows_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "screenshots" (
"id" TEXT NOT NULL,
"recordId" TEXT NOT NULL,
"fileId" TEXT NOT NULL,
"filename" TEXT NOT NULL,
"monitorName" TEXT NOT NULL,
CONSTRAINT "screenshots_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "credentials" (
"id" TEXT NOT NULL,
"hostname" TEXT NOT NULL,
"username" TEXT NOT NULL,
"browser" TEXT NOT NULL,
"url" TEXT NOT NULL,
"login" TEXT NOT NULL,
"lastSyncTime" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "credentials_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "passwords" (
"id" TEXT NOT NULL,
"credentialId" TEXT NOT NULL,
"value" TEXT NOT NULL,
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "passwords_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "versions" (
"id" TEXT NOT NULL,
"version" TEXT NOT NULL,
"fileId" TEXT NOT NULL,
"filename" TEXT NOT NULL,
"checksum" TEXT NOT NULL,
"uploadTime" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"isLatest" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "versions_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "nssm" (
"id" TEXT NOT NULL,
"fileId" TEXT NOT NULL,
"filename" TEXT NOT NULL,
"checksum" TEXT NOT NULL,
"uploadTime" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "nssm_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "hosts_hostname_key" ON "hosts"("hostname");
-- CreateIndex
CREATE INDEX "records_hostname_timestamp_idx" ON "records"("hostname", "timestamp");
-- CreateIndex
CREATE INDEX "records_timestamp_idx" ON "records"("timestamp");
-- CreateIndex
CREATE INDEX "credentials_hostname_idx" ON "credentials"("hostname");
-- CreateIndex
CREATE UNIQUE INDEX "credentials_hostname_username_browser_url_login_key" ON "credentials"("hostname", "username", "browser", "url", "login");
-- AddForeignKey
ALTER TABLE "records" ADD CONSTRAINT "records_hostname_fkey" FOREIGN KEY ("hostname") REFERENCES "hosts"("hostname") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "windows" ADD CONSTRAINT "windows_recordId_fkey" FOREIGN KEY ("recordId") REFERENCES "records"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "screenshots" ADD CONSTRAINT "screenshots_recordId_fkey" FOREIGN KEY ("recordId") REFERENCES "records"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "credentials" ADD CONSTRAINT "credentials_hostname_fkey" FOREIGN KEY ("hostname") REFERENCES "hosts"("hostname") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "passwords" ADD CONSTRAINT "passwords_credentialId_fkey" FOREIGN KEY ("credentialId") REFERENCES "credentials"("id") ON DELETE CASCADE ON UPDATE CASCADE;