/* eslint-disable canonical/no-unused-exports */ /* eslint-disable max-len */ import { type MigrationInterface, type QueryRunner } from 'typeorm'; export class CreateIncentiveRecordAndBlock1698343862122 implements MigrationInterface { name = 'CreateIncentiveRecordAndBlock1698343862122'; public async up(queryRunner: QueryRunner): Promise<void> { await queryRunner.query( `CREATE TABLE "incentive_records" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "amount" numeric(20,6) NOT NULL DEFAULT '0', "quantity" numeric(20,6) NOT NULL DEFAULT '0', "threshold" numeric(20,6) NOT NULL DEFAULT '0', "date" TIMESTAMP NOT NULL, "employee_id" uuid, "incentive_setting_id" uuid, CONSTRAINT "PK_5581ec1b3a2b93f5f85dd977ad3" PRIMARY KEY ("id"))`, ); await queryRunner.query( `CREATE TABLE "blocks" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, "is_active" boolean NOT NULL DEFAULT true, CONSTRAINT "UQ_cf76c8e0cef079c9441a5792461" UNIQUE ("name"), CONSTRAINT "PK_8244fa1495c4e9222a01059244b" PRIMARY KEY ("id"))`, ); await queryRunner.query( `CREATE TYPE "public"."incentive_settings_period_enum" AS ENUM('DAILY', 'MONTHLY', 'ONLY_ONCE')`, ); await queryRunner.query( `ALTER TABLE "incentive_settings" ADD "period" "public"."incentive_settings_period_enum" NOT NULL`, ); await queryRunner.query( `ALTER TYPE "public"."activity_record_settings_incentive_name_enum" RENAME TO "activity_record_settings_incentive_name_enum_old"`, ); await queryRunner.query( `CREATE TYPE "public"."activity_record_settings_incentive_name_enum" AS ENUM('sucker planting', 'sucker harvest', 'fruit harvest')`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ALTER COLUMN "incentive_name" TYPE "public"."activity_record_settings_incentive_name_enum" USING "incentive_name"::"text"::"public"."activity_record_settings_incentive_name_enum"`, ); await queryRunner.query( `DROP TYPE "public"."activity_record_settings_incentive_name_enum_old"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT '1.5'`, ); await queryRunner.query( `ALTER TABLE "incentive_records" ADD CONSTRAINT "incentive_record_employee" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE CASCADE ON UPDATE CASCADE`, ); await queryRunner.query( `ALTER TABLE "incentive_records" ADD CONSTRAINT "incentiveSetting" FOREIGN KEY ("incentive_setting_id") REFERENCES "incentive_settings"("id") ON DELETE CASCADE ON UPDATE CASCADE`, ); } public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.query( `ALTER TABLE "incentive_records" DROP CONSTRAINT "incentiveSetting"`, ); await queryRunner.query( `ALTER TABLE "incentive_records" DROP CONSTRAINT "incentive_record_employee"`, ); await queryRunner.query( `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT 1.5`, ); await queryRunner.query( `CREATE TYPE "public"."activity_record_settings_incentive_name_enum_old" AS ENUM('meal', 'perfect attendance', 'sucker planting', 'sucker harvest', 'fruit harvest', 'referral', 'long service')`, ); await queryRunner.query( `ALTER TABLE "activity_record_settings" ALTER COLUMN "incentive_name" TYPE "public"."activity_record_settings_incentive_name_enum_old" USING "incentive_name"::"text"::"public"."activity_record_settings_incentive_name_enum_old"`, ); await queryRunner.query( `DROP TYPE "public"."activity_record_settings_incentive_name_enum"`, ); await queryRunner.query( `ALTER TYPE "public"."activity_record_settings_incentive_name_enum_old" RENAME TO "activity_record_settings_incentive_name_enum"`, ); await queryRunner.query( `ALTER TABLE "incentive_settings" DROP COLUMN "period"`, ); await queryRunner.query( `DROP TYPE "public"."incentive_settings_period_enum"`, ); await queryRunner.query(`DROP TABLE "blocks"`); await queryRunner.query(`DROP TABLE "incentive_records"`); } }