diff --git a/api-v3/src/database/migrations/1790099100000-f6-3-mobile-field-common-attributes.ts b/api-v3/src/database/migrations/1790099100000-f6-3-mobile-field-common-attributes.ts new file mode 100644 index 0000000..e38002e --- /dev/null +++ b/api-v3/src/database/migrations/1790099100000-f6-3-mobile-field-common-attributes.ts @@ -0,0 +1,47 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class F63MobileFieldCommonAttributes1790099100000 implements MigrationInterface { + name = 'F63MobileFieldCommonAttributes1790099100000'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + WITH target_types AS ( + SELECT id + FROM asset_types + WHERE lower(code) IN ('instalacion','subinstalacion') + ), fields(code,name,sort_order) AS ( + VALUES + ('campo_marca','Marca',10), + ('campo_modelo','Modelo',20), + ('campo_capacidad','Capacidad',30), + ('campo_numero_serie','Número de serie',40), + ('campo_funcion','Función',50) + ) + INSERT INTO asset_attribute_definitions ( + asset_type_id, code, name, data_type, is_required, is_active, sort_order + ) + SELECT target.id, fields.code, fields.name, 'TEXT'::asset_attribute_data_type, + false, true, fields.sort_order + FROM target_types target + CROSS JOIN fields + WHERE NOT EXISTS ( + SELECT 1 + FROM asset_attribute_definitions existing + WHERE existing.asset_type_id=target.id + AND lower(existing.code)=lower(fields.code) + ) + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + DELETE FROM asset_attribute_definitions definition + USING asset_types type + WHERE definition.asset_type_id=type.id + AND lower(type.code) IN ('instalacion','subinstalacion') + AND definition.code IN ( + 'campo_marca','campo_modelo','campo_capacidad','campo_numero_serie','campo_funcion' + ) + `); + } +}