Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async update(data: DeepPartial, where: W, userId: string): Promise {
(data as any).updatedById = userId; // TODO: fix any
// const whereOptions = this.pullParamsFromClass(where);
const found = await this.findOne(where);
const idData = ({ id: found.id } as any) as DeepPartial;
const merged = this.repository.merge(new this.entityClass(), data, idData);
// skipMissingProperties -> partial validation of only supplied props
const errors = await validate(merged, { skipMissingProperties: true });
if (errors.length) {
throw new ArgumentValidationError(errors);
}
// TODO: Fix `any`
const result = await this.repository.save(merged as any);
return this.repository.findOneOrFail({ where: { id: result.id } });
}
async create(data: DeepPartial, userId: string): Promise {
(data as any).createdById = userId; // TODO: fix any
const results = this.repository.create([data]);
const obj = results[0];
// Validate against the the data model
// Without `skipMissingProperties`, some of the class-validator validations (like MinLength)
// will fail if you don't specify the property
const errors = await validate(obj, { skipMissingProperties: true });
if (errors.length) {
// TODO: create our own error format that matches Mike B's format
throw new ArgumentValidationError(errors);
}
// TODO: remove any when this is fixed: https://github.com/Microsoft/TypeScript/issues/21592
// TODO: Fix `any`
return this.repository.save(obj as any, { reload: true });
}
async createMany(data: DeepPartial[], userId: string): Promise {
data = data.map(item => {
return { ...item, createdById: userId };
});
const results = this.repository.create(data);
// Validate against the the data model
// Without `skipMissingProperties`, some of the class-validator validations (like MinLength)
// will fail if you don't specify the property
for (const obj of results) {
const errors = await validate(obj, { skipMissingProperties: true });
if (errors.length) {
// TODO: create our own error format that matches Mike B's format
throw new ArgumentValidationError(errors);
}
}
// TODO: remove any when this is fixed: https://github.com/Microsoft/TypeScript/issues/21592
// TODO: Fix `any`
return this.repository.save(results as any, { reload: true });
}