import { MigrationInterface, QueryRunner } from "typeorm"

export class AlterUsersTableAddCompanyId1761737290850 implements MigrationInterface {
  name = "AlterUsersTableAddCompanyId1761737290850"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "slug"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "contact_no"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "profile_pic"')
    await queryRunner.query('ALTER TABLE "users" ADD "created_by" integer')
    await queryRunner.query('ALTER TABLE "users" ADD "updated_by" integer')
    await queryRunner.query('ALTER TABLE "users" ADD "deleted_by" integer')
    await queryRunner.query('ALTER TABLE "users" ADD "company_id" integer')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "phone" character varying(20)',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD "profile_image" character varying(255)',
    )
    await queryRunner.query('ALTER TABLE "users" ADD "last_login_at" TIMESTAMP')
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "created_at" SET NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "created_at" SET DEFAULT NOW()',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "updated_at" SET NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "updated_at" SET DEFAULT NOW()',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "first_name"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "first_name" character varying(150) NOT NULL',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "last_name"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "last_name" character varying(150) NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3"',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "email"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "email" character varying(150) NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email")',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "password"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "password" character varying(255) NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "status" SET DEFAULT \'1\'',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "FK_f32b1cb14a9920477bcfd63df2c" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "FK_b75c92ef36f432fe68ec300a7d4" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "FK_021e2c9d9dca9f0885e8d738326" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "FK_7ae6334059289559722437bcc1c" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION',
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "FK_7ae6334059289559722437bcc1c"',
    )
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "FK_021e2c9d9dca9f0885e8d738326"',
    )
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "FK_b75c92ef36f432fe68ec300a7d4"',
    )
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "FK_f32b1cb14a9920477bcfd63df2c"',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "status" DROP DEFAULT',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "password"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "password" character varying',
    )
    await queryRunner.query(
      'ALTER TABLE "users" DROP CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3"',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "email"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "email" character varying NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD CONSTRAINT "UQ_97672ac88f789774dd47f7c8be3" UNIQUE ("email")',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "last_name"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "last_name" character varying',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "first_name"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "first_name" character varying NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "updated_at" SET DEFAULT now()',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "updated_at" DROP NOT NULL',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "created_at" SET DEFAULT now()',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ALTER COLUMN "created_at" DROP NOT NULL',
    )
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "last_login_at"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "profile_image"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "phone"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "company_id"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "deleted_by"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "updated_by"')
    await queryRunner.query('ALTER TABLE "users" DROP COLUMN "created_by"')
    await queryRunner.query(
      'ALTER TABLE "users" ADD "profile_pic" character varying',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD "contact_no" character varying',
    )
    await queryRunner.query(
      'ALTER TABLE "users" ADD "slug" character varying NOT NULL',
    )
  }
}
