import { MigrationInterface, QueryRunner } from 'typeorm';

export class addDiscussionEntities1718623987292 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `INSERT INTO public.scopes(id, name) VALUES (5, 'discussions')`,
    );

    await queryRunner.query(`
        INSERT INTO asset_block_keys(project_id, block_key, block_name, block_title, block_type)
        SELECT id, 13, 'basic', '', 'chat'
        FROM projects;
    `);
    await queryRunner.query(
      `
        INSERT INTO public.assets (id, workspace_id, parent_ids, project_id, name, title, icon, scope_id, is_abstract, created_at, updated_at, deleted_at, creator_user_id) 
        VALUES ('00000000-0000-0000-0000-000000000040', '00000000-0000-0000-0000-000000000001', null, 1, null, null, null, 5, true, '2023-12-03 18:51:19.372203 +00:00', '2023-12-03 19:32:52.452284 +00:00', null, null);
    `,
    );

    await queryRunner.query(`
        INSERT INTO public.asset_blocks (project_id, block_key, asset_id, title, props, created_at, updated_at, index, has_formula) 
        VALUES (1, 13, '00000000-0000-0000-0000-000000000040', '[[t:Chat]]', '{}', '2023-12-03 19:32:52.452284 +00:00', '2023-12-03 19:32:52.452284 +00:00', null, false);
    `);

    await queryRunner.query(`
        INSERT INTO asset_comps(project_id, id)
        SELECT project_id, id
        FROM assets
        ON CONFLICT DO NOTHING;
        INSERT INTO asset_block_comps(project_id, asset_id, block_key)
        SELECT project_id, asset_id, block_key
        FROM asset_blocks
        ON CONFLICT DO NOTHING;
    `);
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
        DELETE FROM public.assets 
        WHERE id = '00000000-0000-0000-0000-000000000040'
    `);

    await queryRunner.query(`DELETE FROM scopes WHERE id = 5`);
  }
}
