Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
protected prepareEntityBeforeSave(
dto: DeepPartial,
parsed: CrudRequest['parsed'],
): T {
/* istanbul ignore if */
if (!isObject(dto)) {
return undefined;
}
if (hasLength(parsed.paramsFilter)) {
for (const filter of parsed.paramsFilter) {
dto[filter.field] = filter.value;
}
}
/* istanbul ignore if */
if (!hasLength(objKeys(dto))) {
return undefined;
}
return dto instanceof this.entityType
? Object.assign(dto, parsed.authPersist)
protected setSearchFieldObjectCondition(
builder: SelectQueryBuilder,
condition: SConditionKey,
field: string,
object: any,
) {
/* istanbul ignore else */
if (isObject(object)) {
const operators = objKeys(object);
if (operators.length === 1) {
const operator = operators[0] as ComparisonOperator;
const value = object[operator];
if (isObject(object.$or)) {
const orKeys = objKeys(object.$or);
this.setSearchFieldObjectCondition(
builder,
orKeys.length === 1 ? condition : '$or',
field,
object.$or,
);
} else {
this.builderSetWhere(builder, condition, field, value, operator);
}),
);
}
}
});
}),
);
}
}
// search: {...}
else {
// search: {foo}
if (keys.length === 1) {
const field = keys[0];
const value = search[field];
if (!isObject(value)) {
this.builderSetWhere(builder, condition, field, value);
} else {
this.setSearchFieldObjectCondition(builder, condition, field, value);
}
}
// search: {foo, ...}
else {
this.builderAddBrackets(
builder,
condition,
new Brackets((qb: any) => {
keys.forEach((field: string) => {
const value = search[field];
if (!isObject(value)) {
this.builderSetWhere(qb, '$and', field, value);
} else {
private parseSearchQueryParam(d: any): SCondition {
try {
if (isNil(d)) {
return undefined;
}
const data = JSON.parse(d);
if (!isObject(data)) {
throw new Error();
}
return data;
} catch (_) {
throw new RequestQueryException('Invalid search param. JSON expected');
}
}
parseQuery(query: any): this {
if (isObject(query)) {
const paramNames = objKeys(query);
if (hasLength(paramNames)) {
this._query = query;
this._paramNames = paramNames;
let searchData = this._query[this.getParamNames('search')[0]];
this.search = this.parseSearchQueryParam(searchData) as any;
if (isNil(this.search)) {
this.filter = this.parseQueryParam(
'filter',
this.conditionParser.bind(this, 'filter'),
);
this.or = this.parseQueryParam('or', this.conditionParser.bind(this, 'or'));
}
this.fields =