feat(db): preload common field inventory attributes
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||||
|
|
||||||
|
export class F63MobileFieldCommonAttributes1790099100000 implements MigrationInterface {
|
||||||
|
name = 'F63MobileFieldCommonAttributes1790099100000';
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
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<void> {
|
||||||
|
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'
|
||||||
|
)
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user