// SPDX-License-Identifier: AGPL-3.0
import * as _ from "lodash";
-import { Resource } from "./common-resource-service";
-
-export default class FilterBuilder<T extends Resource = Resource> {
+import { Resource } from "../../models/resource";
+export class FilterBuilder<T extends Resource = Resource> {
static create<T extends Resource = Resource>(resourcePrefix = "") {
return new FilterBuilder<T>(resourcePrefix);
}
}
public addLike(field: keyof T, value?: string) {
- return this.addCondition(field, "like", value, "", "%");
+ return this.addCondition(field, "like", value, "%", "%");
}
public addILike(field: keyof T, value?: string) {
- return this.addCondition(field, "ilike", value, "", "%");
+ return this.addCondition(field, "ilike", value, "%", "%");
}
public addIsA(field: keyof T, value?: string | string[]) {
}
public concat<O extends Resource>(filterBuilder: FilterBuilder<O>) {
- return new FilterBuilder(this.resourcePrefix, this.filters + this.getSeparator() + filterBuilder.getFilters());
+ return new FilterBuilder(this.resourcePrefix, this.filters + (this.filters && filterBuilder.filters ? "," : "") + filterBuilder.getFilters());
}
public getFilters() {
? _.snakeCase(this.resourcePrefix) + "."
: "";
- this.filters += `${this.getSeparator()}["${resourcePrefix}${_.snakeCase(field.toString())}","${cond}",${value}]`;
+ this.filters += `${this.filters ? "," : ""}["${resourcePrefix}${_.snakeCase(field.toString())}","${cond}",${value}]`;
}
return this;
}
-
- private getSeparator () {
- return this.filters ? "," : "";
- }
}