mirror of
https://github.com/lukevella/rallly.git
synced 2025-07-24 03:37:23 +02:00
First public commit
This commit is contained in:
commit
e05cd62e53
228 changed files with 17717 additions and 0 deletions
94
migrations/20220315143815_init/migration.sql
Normal file
94
migrations/20220315143815_init/migration.sql
Normal file
|
@ -0,0 +1,94 @@
|
|||
-- CreateEnum
|
||||
CREATE TYPE "PollType" AS ENUM ('date');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Poll" (
|
||||
"urlId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deadline" TIMESTAMP(3),
|
||||
"title" TEXT NOT NULL,
|
||||
"type" "PollType" NOT NULL,
|
||||
"description" TEXT,
|
||||
"location" TEXT,
|
||||
"userId" TEXT NOT NULL,
|
||||
"verificationCode" TEXT NOT NULL,
|
||||
"timeZone" TEXT,
|
||||
"verified" BOOLEAN NOT NULL DEFAULT false,
|
||||
"authorName" TEXT NOT NULL DEFAULT E'',
|
||||
"demo" BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
CONSTRAINT "Poll_pkey" PRIMARY KEY ("urlId")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Participant" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"userId" TEXT,
|
||||
"pollId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Participant_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Option" (
|
||||
"id" TEXT NOT NULL,
|
||||
"value" TEXT NOT NULL,
|
||||
"pollId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Option_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Vote" (
|
||||
"id" TEXT NOT NULL,
|
||||
"participantId" TEXT NOT NULL,
|
||||
"optionId" TEXT NOT NULL,
|
||||
"pollId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Vote_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Poll_urlId_key" ON "Poll"("urlId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Poll_urlId_verificationCode_key" ON "Poll"("urlId", "verificationCode");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Participant_id_pollId_key" ON "Participant"("id", "pollId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Poll" ADD CONSTRAINT "Poll_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Participant" ADD CONSTRAINT "Participant_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Participant" ADD CONSTRAINT "Participant_pollId_fkey" FOREIGN KEY ("pollId") REFERENCES "Poll"("urlId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Option" ADD CONSTRAINT "Option_pollId_fkey" FOREIGN KEY ("pollId") REFERENCES "Poll"("urlId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Vote" ADD CONSTRAINT "Vote_pollId_fkey" FOREIGN KEY ("pollId") REFERENCES "Poll"("urlId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Vote" ADD CONSTRAINT "Vote_participantId_fkey" FOREIGN KEY ("participantId") REFERENCES "Participant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Vote" ADD CONSTRAINT "Vote_optionId_fkey" FOREIGN KEY ("optionId") REFERENCES "Option"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
20
migrations/20220322193753_add_comments/migration.sql
Normal file
20
migrations/20220322193753_add_comments/migration.sql
Normal file
|
@ -0,0 +1,20 @@
|
|||
-- CreateTable
|
||||
CREATE TABLE "Comment" (
|
||||
"id" TEXT NOT NULL,
|
||||
"content" TEXT NOT NULL,
|
||||
"pollId" TEXT NOT NULL,
|
||||
"authorName" TEXT NOT NULL,
|
||||
"userId" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Comment_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Comment_id_pollId_key" ON "Comment"("id", "pollId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Comment" ADD CONSTRAINT "Comment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Comment" ADD CONSTRAINT "Comment_pollId_fkey" FOREIGN KEY ("pollId") REFERENCES "Poll"("urlId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
47
migrations/20220329102907_add_links/migration.sql
Normal file
47
migrations/20220329102907_add_links/migration.sql
Normal file
|
@ -0,0 +1,47 @@
|
|||
-- Create nanoid function
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
|
||||
CREATE OR REPLACE FUNCTION nanoid(size int DEFAULT 21)
|
||||
RETURNS text AS $$
|
||||
DECLARE
|
||||
id text := '';
|
||||
i int := 0;
|
||||
urlAlphabet char(64) := 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';
|
||||
bytes bytea := gen_random_bytes(size);
|
||||
byte int;
|
||||
pos int;
|
||||
BEGIN
|
||||
WHILE i < size LOOP
|
||||
byte := get_byte(bytes, i);
|
||||
pos := (byte & 63) + 1; -- + 1 because substr starts at 1 for some reason
|
||||
id := id || substr(urlAlphabet, pos, 1);
|
||||
i = i + 1;
|
||||
END LOOP;
|
||||
RETURN id;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL STABLE;
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Role" AS ENUM ('admin', 'participant');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Link" (
|
||||
"urlId" TEXT NOT NULL,
|
||||
"role" "Role" NOT NULL,
|
||||
"pollId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Link_pkey" PRIMARY KEY ("urlId")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Link_urlId_key" ON "Link"("urlId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Link_pollId_role_key" ON "Link"("pollId", "role");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Link" ADD CONSTRAINT "Link_pollId_fkey" FOREIGN KEY ("pollId") REFERENCES "Poll"("urlId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
INSERT INTO "Link" ("urlId", "pollId", "role") SELECT "urlId", "urlId", 'admin' as "role" FROM "Poll";
|
||||
INSERT INTO "Link" ("urlId", "pollId", "role") SELECT nanoid(), "urlId", 'participant' as "role" FROM "Poll";
|
|
@ -0,0 +1,2 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE "Poll" ADD COLUMN "notifications" BOOLEAN NOT NULL DEFAULT false;
|
3
migrations/20220408120721_legacy_column/migration.sql
Normal file
3
migrations/20220408120721_legacy_column/migration.sql
Normal file
|
@ -0,0 +1,3 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE "Poll" ADD COLUMN "closed" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "legacy" BOOLEAN NOT NULL DEFAULT false;
|
3
migrations/migration_lock.toml
Normal file
3
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 (i.e. Git)
|
||||
provider = "postgresql"
|
Loading…
Add table
Add a link
Reference in a new issue