import { MigrationInterface, QueryRunner } from 'typeorm';

export class addBaseAssetBlocks1706011611585 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
        INSERT INTO public.asset_block_keys (project_id, block_key, block_name, block_title, block_type) 
        SELECT id, 6, '', '[[t:content]]', 'text' FROM projects;
        INSERT INTO public.asset_block_keys (project_id, block_key, block_name, block_title, block_type)
        SELECT id, 7, '', '[[t:content]]', 'checklist' FROM projects;
        INSERT INTO public.asset_block_keys (project_id, block_key, block_name, block_title, block_type)
        SELECT id, 8, '', '[[t:content]]', 'diagram' 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-000000000030', '00000000-0000-0000-0000-000000000001', '{}', 1, null, '[[t:TextElement]]', 'file-word-fill', 3, true, '2024-01-23 18:45:14.649425 +00:00', '2024-01-23 19:12:03.793151 +00:00', null, null);
            INSERT INTO public.asset_blocks (project_id, block_key, asset_id, title, props, created_at, updated_at, index, has_formula) VALUES (1, 6, '00000000-0000-0000-0000-000000000030', '[[t:Content]]', '{}', '2024-01-23 18:45:48.740084 +00:00', '2024-01-23 19:12:03.793151 +00:00', null, false);
        `);
    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-000000000031', '00000000-0000-0000-0000-000000000001', '{}', 1, null, '[[t:CheckListElement]]', 'list-check-3', 3, false, '2024-01-23 18:51:19.372203 +00:00', '2024-01-23 19:32:52.452284 +00:00', null, null);
            INSERT INTO public.asset_blocks (project_id, block_key, asset_id, title, props, created_at, updated_at, index, has_formula) VALUES (1, 7, '00000000-0000-0000-0000-000000000031','[[t:Content]]', '{}', '2024-01-23 19:32:52.452284 +00:00', '2024-01-23 19:32:52.452284 +00:00', null, false);
        `);
    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-000000000032', '00000000-0000-0000-0000-000000000001', '{}', 1, null, '[[t:DiagramElement]]', 'organization-chart', 3, false, '2024-01-23 19:42:06.175254 +00:00', '2024-01-23 22:44:32.491007 +00:00', null, null);
            INSERT INTO public.asset_blocks (project_id, block_key, asset_id, title, props, created_at, updated_at, index, has_formula) VALUES (1, 8, '00000000-0000-0000-0000-000000000032', '[[t:Content]]', '{}', '2024-01-23 21:45:25.513112 +00:00', '2024-01-23 22:44:32.491007 +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.asset_blocks 
        WHERE block_key = 6 OR block_key = 7 OR block_key = 8
    `);
    await queryRunner.query(`
            DELETE FROM public.assets 
            WHERE id = '00000000-0000-0000-0000-000000000030'
        `);
    await queryRunner.query(`
            DELETE FROM public.assets 
            WHERE id = '00000000-0000-0000-0000-000000000031'
        `);
    await queryRunner.query(`
            DELETE FROM public.assets 
            WHERE id = '00000000-0000-0000-0000-000000000032'
        `);
    await queryRunner.query(`
            DELETE FROM public.asset_block_keys 
            WHERE block_key = 6 OR block_key = 7 OR block_key = 8
        `);
  }
}
