InsertAttribute
Toma como parâmetro uma entidade e um objeto, mapeia o objeto e retorna a entidade com as propriedades corrigidas. Considera propriedades desconexas, mas os valores vazios enviados são descartados.
Sem mapeador:
const example: Example = {
name: "example",
description: "this is an example",
extra: undefined,
size: "123",
price: 100,
};
const inputData: IExampleDTO = {
name: undefined,
description: "this is a new description",
extra: "this is an extra",
size: undefined,
price: 20,
nonEntityFieldSent_1: "1",
nonEntityFieldSent_2: "2",
nonEntityFieldSent_3: "3",
nonEntityFieldSent_4: "4",
};
if (inputData.name) {
example.name = inputData.name;
}
if (inputData.description) {
example.description = inputData.description;
}
if (inputData.extra) {
example.extra = inputData.extra;
}
if (inputData.size) {
example.size = inputData.size;
}
if (inputData.price) {
example.price = inputData.price;
}
await this.examplesRepository.update(
{
...example,
nonEntityFieldSent_1: inputData.nonEntityFieldSent_1,
nonEntityFieldSent_2: inputData.nonEntityFieldSent_2,
nonEntityFieldSent_3: inputData.nonEntityFieldSent_3,
nonEntityFieldSent_4: inputData.nonEntityFieldSent_4,
},
trx,
);
output = {
name: "example",
description: "this is a new description",
extra: "this is an extra",
size: "123",
price: 20,
nonEntityFieldSent_1: "1",
nonEntityFieldSent_2: "2",
nonEntityFieldSent_3: "3",
nonEntityFieldSent_4: "4",
};
Usando mapeador:
import { insertAttribute } from '@utils/mappers';
const example: Example = {
name: "example",
description: "this is an example",
extra: undefined,
size: "123",
price: 100,
};
const inputData: IExampleDTO = {
name: undefined,
description: "this is a new description",
extra: "this is an extra",
size: undefined,
price: 20,
nonEntityFieldSent_1: "1",
nonEntityFieldSent_2: "2",
nonEntityFieldSent_3: "3",
nonEntityFieldSent_4: "4",
};
await this.examplesRepository.update(
insertAttribute(example, inputData),
trx,
);
output = {
name: "example",
description: "this is a new description",
extra: "this is an extra",
size: "123",
price: 20,
nonEntityFieldSent_1: "1",
nonEntityFieldSent_2: "2",
nonEntityFieldSent_3: "3",
nonEntityFieldSent_4: "4",
};