targo-backend/prisma/postgres/migrations/20250717164330_dev_v1/migration.sql

145 lines
4.6 KiB
SQL

-- CreateEnum
CREATE TYPE "roles" AS ENUM ('ADMIN', 'SUPERVISOR', 'HR', 'ACCOUNTING', 'EMPLOYEE', 'DEALER', 'CUSTOMER', 'GUEST');
-- CreateEnum
CREATE TYPE "leave_types" AS ENUM ('SICK', 'VACATION', 'UNPAID', 'BEREAVEMENT', 'PARENTAL', 'LEGAL');
-- CreateEnum
CREATE TYPE "leave_approval_status" AS ENUM ('PENDING', 'APPROVED', 'DENIED', 'CANCELLED', 'ESCALATED');
-- CreateTable
CREATE TABLE "users" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"email" TEXT NOT NULL,
"phone_number" INTEGER NOT NULL,
"residence" TEXT,
"role" "roles" NOT NULL DEFAULT 'GUEST',
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "employees" (
"id" SERIAL NOT NULL,
"user_id" UUID NOT NULL,
"external_payroll_id" INTEGER NOT NULL,
"company_code" INTEGER NOT NULL,
"first_work_day" TIMESTAMP(3) NOT NULL,
"last_work_day" TIMESTAMP(3),
CONSTRAINT "employees_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "customers" (
"id" SERIAL NOT NULL,
"user_id" UUID NOT NULL,
"invoice_id" INTEGER,
CONSTRAINT "customers_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "leave_requests" (
"id" SERIAL NOT NULL,
"employee_id" INTEGER NOT NULL,
"leave_type" "leave_types" NOT NULL,
"start_date_time" TIMESTAMP(3) NOT NULL,
"end_date_time" TIMESTAMP(3),
"comment" TEXT NOT NULL,
"approval_status" "leave_approval_status" NOT NULL DEFAULT 'PENDING',
CONSTRAINT "leave_requests_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "timesheets" (
"id" SERIAL NOT NULL,
"employee_id" INTEGER NOT NULL,
"is_approved" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "timesheets_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "shifts" (
"id" SERIAL NOT NULL,
"timesheet_id" INTEGER NOT NULL,
"shift_code_id" INTEGER NOT NULL,
"date" TIMESTAMP(3) NOT NULL,
"start_time" TIMESTAMP(3) NOT NULL,
"end_time" TIMESTAMP(3) NOT NULL,
CONSTRAINT "shifts_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "shift_codes" (
"id" SERIAL NOT NULL,
"shift_type" TEXT NOT NULL,
"bank_code" TEXT NOT NULL,
CONSTRAINT "shift_codes_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "refresh_tokens" (
"id" TEXT NOT NULL,
"user_id" UUID NOT NULL,
"application" TEXT NOT NULL,
"access_token" TEXT NOT NULL,
"refresh_token" TEXT NOT NULL,
"access_token_expiry" TIMESTAMP(3) NOT NULL,
"refresh_token_expiry" TIMESTAMP(3),
"is_revoked" BOOLEAN NOT NULL DEFAULT false,
"scopes" JSONB NOT NULL DEFAULT '[]',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3),
CONSTRAINT "refresh_tokens_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
-- CreateIndex
CREATE UNIQUE INDEX "users_phone_number_key" ON "users"("phone_number");
-- CreateIndex
CREATE UNIQUE INDEX "employees_user_id_key" ON "employees"("user_id");
-- CreateIndex
CREATE UNIQUE INDEX "customers_user_id_key" ON "customers"("user_id");
-- CreateIndex
CREATE UNIQUE INDEX "customers_invoice_id_key" ON "customers"("invoice_id");
-- CreateIndex
CREATE UNIQUE INDEX "refresh_tokens_access_token_key" ON "refresh_tokens"("access_token");
-- CreateIndex
CREATE UNIQUE INDEX "refresh_tokens_refresh_token_key" ON "refresh_tokens"("refresh_token");
-- AddForeignKey
ALTER TABLE "employees" ADD CONSTRAINT "employees_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "customers" ADD CONSTRAINT "customers_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "leave_requests" ADD CONSTRAINT "leave_requests_employee_id_fkey" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "timesheets" ADD CONSTRAINT "timesheets_employee_id_fkey" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "shifts" ADD CONSTRAINT "shifts_timesheet_id_fkey" FOREIGN KEY ("timesheet_id") REFERENCES "timesheets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "shifts" ADD CONSTRAINT "shifts_shift_code_id_fkey" FOREIGN KEY ("shift_code_id") REFERENCES "shift_codes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "refresh_tokens" ADD CONSTRAINT "refresh_tokens_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;