175 lines
4.7 KiB
SQL
175 lines
4.7 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"pubkey" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL DEFAULT 'USER',
|
|
"displayName" TEXT,
|
|
"username" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Meetup" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"date" TEXT NOT NULL,
|
|
"time" TEXT NOT NULL,
|
|
"location" TEXT NOT NULL,
|
|
"link" TEXT,
|
|
"imageId" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'UPCOMING',
|
|
"featured" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Media" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"slug" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"mimeType" TEXT NOT NULL,
|
|
"size" INTEGER NOT NULL,
|
|
"originalFilename" TEXT NOT NULL,
|
|
"uploadedBy" TEXT NOT NULL,
|
|
"title" TEXT,
|
|
"description" TEXT,
|
|
"altText" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Post" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"nostrEventId" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"excerpt" TEXT,
|
|
"authorPubkey" TEXT NOT NULL,
|
|
"authorName" TEXT,
|
|
"featured" BOOLEAN NOT NULL DEFAULT false,
|
|
"visible" BOOLEAN NOT NULL DEFAULT true,
|
|
"publishedAt" DATETIME NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Category" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PostCategory" (
|
|
"postId" TEXT NOT NULL,
|
|
"categoryId" TEXT NOT NULL,
|
|
|
|
PRIMARY KEY ("postId", "categoryId"),
|
|
CONSTRAINT "PostCategory_postId_fkey" FOREIGN KEY ("postId") REFERENCES "Post" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "PostCategory_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "HiddenContent" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"nostrEventId" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"hiddenBy" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "BlockedPubkey" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"pubkey" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"blockedBy" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Relay" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"url" TEXT NOT NULL,
|
|
"priority" INTEGER NOT NULL DEFAULT 0,
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Setting" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"key" TEXT NOT NULL,
|
|
"value" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "NostrEventCache" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"eventId" TEXT NOT NULL,
|
|
"kind" INTEGER NOT NULL,
|
|
"pubkey" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"tags" TEXT NOT NULL,
|
|
"createdAt" INTEGER NOT NULL,
|
|
"cachedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Submission" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"eventId" TEXT,
|
|
"naddr" TEXT,
|
|
"title" TEXT NOT NULL,
|
|
"authorPubkey" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
|
"reviewedBy" TEXT,
|
|
"reviewNote" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Faq" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"question" TEXT NOT NULL,
|
|
"answer" TEXT NOT NULL,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"showOnHomepage" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_pubkey_key" ON "User"("pubkey");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Post_nostrEventId_key" ON "Post"("nostrEventId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Post_slug_key" ON "Post"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Category_slug_key" ON "Category"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Relay_url_key" ON "Relay"("url");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Setting_key_key" ON "Setting"("key");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "NostrEventCache_eventId_key" ON "NostrEventCache"("eventId");
|