144 lines
4.3 KiB
SQL
144 lines
4.3 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" SERIAL NOT NULL,
|
|
"firstName" TEXT NOT NULL DEFAULT '',
|
|
"lastName" TEXT NOT NULL DEFAULT '',
|
|
"phone" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL DEFAULT '',
|
|
"password" TEXT,
|
|
"companyName" TEXT,
|
|
"inn" BIGINT,
|
|
"ogrn" BIGINT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "yachts" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"model" TEXT,
|
|
"year" INTEGER NOT NULL,
|
|
"length" DOUBLE PRECISION NOT NULL,
|
|
"speed" INTEGER DEFAULT 0,
|
|
"minCost" INTEGER DEFAULT 0,
|
|
"mainImageUrl" TEXT DEFAULT '',
|
|
"galleryUrls" JSONB,
|
|
"hasQuickRent" BOOLEAN NOT NULL DEFAULT false,
|
|
"isFeatured" BOOLEAN NOT NULL DEFAULT false,
|
|
"topText" TEXT,
|
|
"comfortCapacity" INTEGER DEFAULT 0,
|
|
"maxCapacity" INTEGER DEFAULT 0,
|
|
"width" DOUBLE PRECISION DEFAULT 0,
|
|
"cabinsCount" INTEGER DEFAULT 0,
|
|
"matherial" TEXT DEFAULT '',
|
|
"power" INTEGER DEFAULT 0,
|
|
"description" TEXT DEFAULT '',
|
|
"userId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "yachts_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "reservations" (
|
|
"id" SERIAL NOT NULL,
|
|
"yachtId" INTEGER NOT NULL,
|
|
"reservatorId" INTEGER NOT NULL,
|
|
"startUtc" INTEGER NOT NULL,
|
|
"endUtc" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "reservations_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "reviews" (
|
|
"id" SERIAL NOT NULL,
|
|
"reviewerId" INTEGER NOT NULL,
|
|
"yachtId" INTEGER NOT NULL,
|
|
"starsCount" INTEGER NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "reviews_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "refresh_tokens" (
|
|
"id" SERIAL NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "refresh_tokens_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "verification_codes" (
|
|
"id" SERIAL NOT NULL,
|
|
"phone" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "verification_codes_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "sms_send_logs" (
|
|
"id" SERIAL NOT NULL,
|
|
"phone" TEXT NOT NULL,
|
|
"ip" TEXT NOT NULL,
|
|
"sentAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "sms_send_logs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "verify_blocks" (
|
|
"id" SERIAL NOT NULL,
|
|
"phone" TEXT NOT NULL,
|
|
"ip" TEXT NOT NULL,
|
|
"count" INTEGER NOT NULL DEFAULT 0,
|
|
"blockedUntil" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "verify_blocks_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_phone_key" ON "User"("phone");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "refresh_tokens_token_key" ON "refresh_tokens"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "verification_codes_phone_idx" ON "verification_codes"("phone");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "sms_send_logs_phone_sentAt_idx" ON "sms_send_logs"("phone", "sentAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "sms_send_logs_ip_sentAt_idx" ON "sms_send_logs"("ip", "sentAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "verify_blocks_phone_ip_key" ON "verify_blocks"("phone", "ip");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "yachts" ADD CONSTRAINT "yachts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "reservations" ADD CONSTRAINT "reservations_yachtId_fkey" FOREIGN KEY ("yachtId") REFERENCES "yachts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "reservations" ADD CONSTRAINT "reservations_reservatorId_fkey" FOREIGN KEY ("reservatorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "reviews" ADD CONSTRAINT "reviews_yachtId_fkey" FOREIGN KEY ("yachtId") REFERENCES "yachts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "reviews" ADD CONSTRAINT "reviews_reviewerId_fkey" FOREIGN KEY ("reviewerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "refresh_tokens" ADD CONSTRAINT "refresh_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|