47 lines
1.5 KiB
SQL
47 lines
1.5 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "roles" AS ENUM ('ADMIN', 'USER');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "accounts" (
|
|
"id" TEXT NOT NULL,
|
|
"phone" TEXT,
|
|
"email" TEXT,
|
|
"is_phone_verified" BOOLEAN NOT NULL DEFAULT false,
|
|
"is_email_verified" BOOLEAN NOT NULL DEFAULT false,
|
|
"role" "roles" NOT NULL DEFAULT 'USER',
|
|
"telegram_id" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "accounts_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "pending_contact_changes" (
|
|
"id" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"value" TEXT NOT NULL,
|
|
"code_hash" TEXT NOT NULL,
|
|
"expires_at" TIMESTAMP(3) NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
"account_id" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "pending_contact_changes_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "accounts_phone_key" ON "accounts"("phone");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "accounts_email_key" ON "accounts"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "accounts_telegram_id_key" ON "accounts"("telegram_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "pending_contact_changes_account_id_type_key" ON "pending_contact_changes"("account_id", "type");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "pending_contact_changes" ADD CONSTRAINT "pending_contact_changes_account_id_fkey" FOREIGN KEY ("account_id") REFERENCES "accounts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|