chore: add Docker deployment files, README, and Prisma migrations
- Add Dockerfile and docker-compose.yml for VPS/LXC deployment. - Update README with setup, environment variables, and deployment notes. - Commit initial Prisma migration for SQLite schema. - Configure Next.js for standalone output and dev origin allowlist.
This commit is contained in:
103
prisma/migrations/20260617003114_init/migration.sql
Normal file
103
prisma/migrations/20260617003114_init/migration.sql
Normal file
@@ -0,0 +1,103 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "AdminUser" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"username" TEXT NOT NULL,
|
||||
"passwordHash" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Source" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"baseUrl" TEXT,
|
||||
"apiCode" TEXT NOT NULL,
|
||||
"defaultBias" TEXT,
|
||||
"credibilityScore" REAL NOT NULL DEFAULT 5,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Article" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"title" TEXT NOT NULL,
|
||||
"summary" TEXT,
|
||||
"url" TEXT NOT NULL,
|
||||
"sourceId" TEXT NOT NULL,
|
||||
"imageUrl" TEXT,
|
||||
"publishedAt" DATETIME,
|
||||
"fetchedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"primaryBias" TEXT NOT NULL,
|
||||
"biasConfidence" REAL NOT NULL DEFAULT 0,
|
||||
"politicalTags" TEXT NOT NULL DEFAULT '[]',
|
||||
"rankScore" REAL NOT NULL DEFAULT 0,
|
||||
"credibilityScore" REAL NOT NULL DEFAULT 5,
|
||||
"status" TEXT NOT NULL DEFAULT 'DRAFT',
|
||||
"topics" TEXT NOT NULL DEFAULT '[]',
|
||||
"rawData" TEXT NOT NULL DEFAULT '{}',
|
||||
"aiExplanation" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "Article_sourceId_fkey" FOREIGN KEY ("sourceId") REFERENCES "Source" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ApiKey" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"provider" TEXT NOT NULL,
|
||||
"encryptedKey" TEXT NOT NULL,
|
||||
"label" TEXT,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"lastUsedAt" DATETIME,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SearchRule" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"query" TEXT NOT NULL,
|
||||
"sources" TEXT NOT NULL DEFAULT '[]',
|
||||
"schedule" TEXT NOT NULL DEFAULT '0 */6 * * *',
|
||||
"maxResults" INTEGER NOT NULL DEFAULT 20,
|
||||
"autoPublish" BOOLEAN NOT NULL DEFAULT false,
|
||||
"minRankScore" REAL NOT NULL DEFAULT 5,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"lastRunAt" DATETIME,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SearchRun" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"ruleId" TEXT NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'RUNNING',
|
||||
"articlesFound" INTEGER NOT NULL DEFAULT 0,
|
||||
"error" TEXT,
|
||||
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"endedAt" DATETIME,
|
||||
CONSTRAINT "SearchRun_ruleId_fkey" FOREIGN KEY ("ruleId") REFERENCES "SearchRule" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "AdminUser_username_key" ON "AdminUser"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Source_apiCode_key" ON "Source"("apiCode");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Article_primaryBias_status_idx" ON "Article"("primaryBias", "status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Article_status_publishedAt_idx" ON "Article"("status", "publishedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Article_rankScore_idx" ON "Article"("rankScore");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "ApiKey_provider_isActive_key" ON "ApiKey"("provider", "isActive");
|
||||
3
prisma/migrations/migration_lock.toml
Normal file
3
prisma/migrations/migration_lock.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "sqlite"
|
||||
Reference in New Issue
Block a user