Initial commit: LACA parking management system
This commit is contained in:
163
backend/prisma/migrations/20240728061550_init_db/migration.sql
Normal file
163
backend/prisma/migrations/20240728061550_init_db/migration.sql
Normal file
@@ -0,0 +1,163 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Language" AS ENUM ('vi', 'en');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Gender" AS ENUM ('Male', 'Female', 'LGBT');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "BookingStatus" AS ENUM ('done', 'pending', 'reject', 'cancel');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"phone" TEXT,
|
||||
"username" TEXT,
|
||||
"fullname" TEXT,
|
||||
"dob" TIMESTAMP(3),
|
||||
"gender" "Gender" NOT NULL DEFAULT 'Female',
|
||||
"language" "Language" NOT NULL DEFAULT 'vi',
|
||||
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMPTZ(3) NOT NULL,
|
||||
"deleted_at" TIMESTAMPTZ(3),
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Booking" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"path" TEXT,
|
||||
"image" TEXT,
|
||||
"public" BOOLEAN NOT NULL DEFAULT true,
|
||||
"user_id" INTEGER NOT NULL,
|
||||
"status" "BookingStatus" NOT NULL DEFAULT 'pending',
|
||||
"slot_id" INTEGER NOT NULL,
|
||||
"start_at" TIMESTAMPTZ(3) NOT NULL,
|
||||
"end_at" TIMESTAMPTZ(3),
|
||||
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMPTZ(3) NOT NULL,
|
||||
"deleted_at" TIMESTAMPTZ(3),
|
||||
|
||||
CONSTRAINT "Booking_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Slot" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"lat" DOUBLE PRECISION NOT NULL,
|
||||
"lng" DOUBLE PRECISION NOT NULL,
|
||||
"address" TEXT NOT NULL,
|
||||
"district" TEXT NOT NULL,
|
||||
"ward" TEXT NOT NULL,
|
||||
"city" TEXT NOT NULL,
|
||||
"destination" TEXT,
|
||||
"total" INTEGER NOT NULL,
|
||||
"empty" INTEGER NOT NULL,
|
||||
"published" BOOLEAN NOT NULL DEFAULT false,
|
||||
"tenantId" INTEGER NOT NULL,
|
||||
"distance" DOUBLE PRECISION NOT NULL,
|
||||
"duration" DOUBLE PRECISION NOT NULL,
|
||||
"directions" JSONB NOT NULL,
|
||||
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMPTZ(3) NOT NULL,
|
||||
"deleted_at" TIMESTAMPTZ(3),
|
||||
|
||||
CONSTRAINT "Slot_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Admin" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"username" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"password_confirmation" TEXT NOT NULL,
|
||||
"street" TEXT,
|
||||
"city" TEXT,
|
||||
"province" TEXT,
|
||||
"first_name" TEXT NOT NULL,
|
||||
"last_name" TEXT NOT NULL,
|
||||
"phone" TEXT NOT NULL,
|
||||
"dob" TIMESTAMP(3),
|
||||
"language" "Language" NOT NULL DEFAULT 'vi',
|
||||
"last_login_at" TIMESTAMP(3),
|
||||
"current_login_at" TIMESTAMP(3),
|
||||
"last_login_failed_at" TIMESTAMP(3),
|
||||
"consecutive_login_penalty" INTEGER NOT NULL DEFAULT 0,
|
||||
"avatarUrl" TEXT,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"last_lockout_at" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Admin_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Tenant" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"email" TEXT,
|
||||
"username" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"password_confirmation" TEXT,
|
||||
"street" TEXT,
|
||||
"city" TEXT,
|
||||
"province" TEXT,
|
||||
"postal_code" TEXT,
|
||||
"first_name" TEXT NOT NULL,
|
||||
"last_name" TEXT NOT NULL,
|
||||
"phone" TEXT NOT NULL,
|
||||
"language" "Language" NOT NULL DEFAULT 'vi',
|
||||
"last_login_at" TIMESTAMP(3),
|
||||
"current_login_at" TIMESTAMP(3),
|
||||
"last_login_failed_at" TIMESTAMP(3),
|
||||
"consecutive_login_penalty" INTEGER NOT NULL DEFAULT 0,
|
||||
"avatarUrl" TEXT,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"last_lockout_at" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Tenant_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "History" (
|
||||
"id" SERIAL NOT NULL,
|
||||
|
||||
CONSTRAINT "History_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "User_id_email_idx" ON "User"("id", "email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Booking_user_id_id_idx" ON "Booking"("user_id", "id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Slot_id_idx" ON "Slot"("id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Admin_username_key" ON "Admin"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Tenant_email_key" ON "Tenant"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Tenant_username_key" ON "Tenant"("username");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Booking" ADD CONSTRAINT "Booking_slot_id_fkey" FOREIGN KEY ("slot_id") REFERENCES "Slot"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Slot" ADD CONSTRAINT "Slot_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user