mirror of
https://github.com/aljazceru/landscape-template.git
synced 2025-12-17 06:14:27 +01:00
160 lines
4.9 KiB
SQL
160 lines
4.9 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" SERIAL NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"lightning_address" TEXT,
|
|
"avatar" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Story" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"body" TEXT NOT NULL,
|
|
"thumbnail_image" TEXT NOT NULL,
|
|
"cover_image" TEXT NOT NULL,
|
|
"votes_count" INTEGER NOT NULL DEFAULT 0,
|
|
"topic_id" INTEGER NOT NULL,
|
|
"user_id" INTEGER,
|
|
|
|
CONSTRAINT "Story_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Question" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"body" TEXT NOT NULL,
|
|
"thumbnail_image" TEXT NOT NULL,
|
|
"votes_count" INTEGER NOT NULL DEFAULT 0,
|
|
"topic_id" INTEGER NOT NULL,
|
|
"user_id" INTEGER,
|
|
|
|
CONSTRAINT "Question_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Topic" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"icon" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Topic_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PostComment" (
|
|
"id" SERIAL NOT NULL,
|
|
"body" TEXT NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"votes_count" INTEGER NOT NULL DEFAULT 0,
|
|
"parent_comment_id" INTEGER,
|
|
"user_id" INTEGER,
|
|
"story_id" INTEGER,
|
|
"question_id" INTEGER,
|
|
|
|
CONSTRAINT "PostComment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Hackathon" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"date" TEXT NOT NULL,
|
|
"cover_image" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"location" TEXT NOT NULL,
|
|
"website" TEXT NOT NULL,
|
|
"votes_count" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
CONSTRAINT "Hackathon_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "_StoryToTag" (
|
|
"A" INTEGER NOT NULL,
|
|
"B" INTEGER NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "_QuestionToTag" (
|
|
"A" INTEGER NOT NULL,
|
|
"B" INTEGER NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "_HackathonToTopic" (
|
|
"A" INTEGER NOT NULL,
|
|
"B" INTEGER NOT NULL
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Topic_title_key" ON "Topic"("title");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "_StoryToTag_AB_unique" ON "_StoryToTag"("A", "B");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "_StoryToTag_B_index" ON "_StoryToTag"("B");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "_QuestionToTag_AB_unique" ON "_QuestionToTag"("A", "B");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "_QuestionToTag_B_index" ON "_QuestionToTag"("B");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "_HackathonToTopic_AB_unique" ON "_HackathonToTopic"("A", "B");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "_HackathonToTopic_B_index" ON "_HackathonToTopic"("B");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Story" ADD CONSTRAINT "Story_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Story" ADD CONSTRAINT "Story_topic_id_fkey" FOREIGN KEY ("topic_id") REFERENCES "Topic"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Question" ADD CONSTRAINT "Question_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Question" ADD CONSTRAINT "Question_topic_id_fkey" FOREIGN KEY ("topic_id") REFERENCES "Topic"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PostComment" ADD CONSTRAINT "PostComment_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PostComment" ADD CONSTRAINT "PostComment_story_id_fkey" FOREIGN KEY ("story_id") REFERENCES "Story"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PostComment" ADD CONSTRAINT "PostComment_question_id_fkey" FOREIGN KEY ("question_id") REFERENCES "Question"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PostComment" ADD CONSTRAINT "PostComment_parent_comment_id_fkey" FOREIGN KEY ("parent_comment_id") REFERENCES "PostComment"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_StoryToTag" ADD FOREIGN KEY ("A") REFERENCES "Story"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_StoryToTag" ADD FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_QuestionToTag" ADD FOREIGN KEY ("A") REFERENCES "Question"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_QuestionToTag" ADD FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_HackathonToTopic" ADD FOREIGN KEY ("A") REFERENCES "Hackathon"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_HackathonToTopic" ADD FOREIGN KEY ("B") REFERENCES "Topic"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|