/* eslint-disable canonical/no-unused-exports */ /* eslint-disable max-len */ import { type MigrationInterface, type QueryRunner } from 'typeorm'; export class CreateTables1698251398736 implements MigrationInterface { name = 'CreateTables1698251398736'; public async up(queryRunner: QueryRunner): Promise<void> { await queryRunner.query( `CREATE TABLE "ot_records" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "date" TIMESTAMP NOT NULL, "hour" numeric(20,6) NOT NULL, "rate_per" numeric(20,6) NOT NULL, "daily_rate" numeric(20,6) NOT NULL, "employee_id" uuid, CONSTRAINT "PK_97a35872b95837fa955784f153c" PRIMARY KEY ("id"))`, ); await queryRunner.query( `CREATE TYPE "public"."incentive_settings_name_enum" AS ENUM('meal', 'perfect attendance', 'sucker planting', 'sucker harvest', 'fruit harvest', 'referral', 'long service')`, ); await queryRunner.query( `CREATE TYPE "public"."incentive_settings_type_enum" AS ENUM('PERCENTAGE', 'FIXED_AMOUNT')`, ); await queryRunner.query( `CREATE TABLE "incentive_settings" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" "public"."incentive_settings_name_enum" NOT NULL, "is_activated" boolean NOT NULL DEFAULT true, "amount" numeric(20,6) NOT NULL DEFAULT '0', "threshold" numeric(20,6) NOT NULL DEFAULT '0', "type" "public"."incentive_settings_type_enum" NOT NULL DEFAULT 'FIXED_AMOUNT', CONSTRAINT "PK_7c808dbfbd885481d388482f16c" PRIMARY KEY ("id"))`, ); await queryRunner.query( `CREATE TABLE "public_holidays" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "date" TIMESTAMP NOT NULL, "is_holiday" boolean NOT NULL DEFAULT true, CONSTRAINT "UQ_7599e8969de9ac9e64a3d536455" UNIQUE ("date"), CONSTRAINT "PK_e959831bb7c79c39cc58207c122" PRIMARY KEY ("id"))`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "rate_threshold"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "is_incentive_available"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "incentive"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "incentive_threshold"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "incentive_type"`, ); await queryRunner.query( `DROP TYPE "public"."activity_record_settings_incentive_type_enum"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" DROP COLUMN "meal_allowance_amount"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" DROP COLUMN "meal_allowance_threshold"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "is_activated" boolean NOT NULL DEFAULT true`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "activate_until" TIMESTAMP`, ); await queryRunner.query( `CREATE TYPE "public"."activity_record_settings_incentive_name_enum" AS ENUM('meal', 'perfect attendence', 'sucker planting', 'sucker harvest', 'fruit harvest', 'referral', 'long service')`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "incentive_name" "public"."activity_record_settings_incentive_name_enum"`, ); await queryRunner.query( `ALTER TABLE "employees" ADD "referral_by" character varying`, ); await queryRunner.query( `ALTER TABLE "employees" ADD "is_referral_fee_paid" boolean`, ); await queryRunner.query( `ALTER TABLE "employees" ADD "referral_fee_paid_at" TIMESTAMP`, ); await queryRunner.query( `ALTER TABLE "employees" ADD "is_activated" boolean NOT NULL DEFAULT true`, ); await queryRunner.query( `ALTER TABLE "users" ADD CONSTRAINT "UQ_51b8b26ac168fbe7d6f5653e6cf" UNIQUE ("name")`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT '1.5'`, ); await queryRunner.query( `ALTER TABLE "ot_records" ADD CONSTRAINT "ot_record_employee" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE CASCADE ON UPDATE CASCADE`, ); } public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.query( `ALTER TABLE "ot_records" DROP CONSTRAINT "ot_record_employee"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT 1.5`, ); await queryRunner.query( `ALTER TABLE "users" DROP CONSTRAINT "UQ_51b8b26ac168fbe7d6f5653e6cf"`, ); await queryRunner.query( `ALTER TABLE "employees" DROP COLUMN "is_activated"`, ); await queryRunner.query( `ALTER TABLE "employees" DROP COLUMN "referral_fee_paid_at"`, ); await queryRunner.query( `ALTER TABLE "employees" DROP COLUMN "is_referral_fee_paid"`, ); await queryRunner.query( `ALTER TABLE "employees" DROP COLUMN "referral_by"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "incentive_name"`, ); await queryRunner.query( `DROP TYPE "public"."activity_record_settings_incentive_name_enum"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "activate_until"`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" DROP COLUMN "is_activated"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ADD "meal_allowance_threshold" numeric(20,6) NOT NULL DEFAULT '3'`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ADD "meal_allowance_amount" numeric(20,6) NOT NULL DEFAULT '5'`, ); await queryRunner.query( `CREATE TYPE "public"."activity_record_settings_incentive_type_enum" AS ENUM('PERCENTAGE', 'FIXED_AMOUNT', 'ON_DECIDE')`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "incentive_type" "public"."activity_record_settings_incentive_type_enum" NOT NULL DEFAULT 'FIXED_AMOUNT'`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "incentive_threshold" numeric(20,6) NOT NULL DEFAULT '0'`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "incentive" numeric(20,6) NOT NULL DEFAULT '0'`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "is_incentive_available" boolean NOT NULL DEFAULT false`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ADD "rate_threshold" numeric(20,6) NOT NULL DEFAULT '0'`, ); await queryRunner.query(`DROP TABLE "public_holidays"`); await queryRunner.query(`DROP TABLE "incentive_settings"`); await queryRunner.query( `DROP TYPE "public"."incentive_settings_type_enum"`, ); await queryRunner.query( `DROP TYPE "public"."incentive_settings_name_enum"`, ); await queryRunner.query(`DROP TABLE "ot_records"`); } }