import { MigrationInterface, QueryRunner } from 'typeorm'

export class AddBillingSettings1702221116155 implements MigrationInterface {
	name = 'AddBillingSettings1702221116155'

	public async up(queryRunner: QueryRunner): Promise<void> {
		await queryRunner.query(`ALTER TABLE "user" ADD "isAdmin" boolean DEFAULT false`)
		await queryRunner.query(`ALTER TABLE "settings" ADD "billing" json NOT NULL`)
		await queryRunner.query(
			`ALTER TABLE "table_token" ALTER COLUMN "token" SET DEFAULT substr(md5(''||now()::text||random()::text), 0, 16)`,
		)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "customerApp" SET NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "reservation" SET NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "features" SET NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "contact" SET NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "kitchen" SET NOT NULL`)
	}

	public async down(queryRunner: QueryRunner): Promise<void> {
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "kitchen" DROP NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "contact" DROP NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "features" DROP NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "reservation" DROP NOT NULL`)
		await queryRunner.query(`ALTER TABLE "settings" ALTER COLUMN "customerApp" DROP NOT NULL`)
		await queryRunner.query(
			`ALTER TABLE "table_token" ALTER COLUMN "token" SET DEFAULT substr(md5(((''|| (now())) || (random()))), 0, 16)`,
		)
		await queryRunner.query(`ALTER TABLE "settings" DROP COLUMN "billing"`)
		await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "isAdmin"`)
	}
}
