Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions packages/chassis-srv/src/database/provider/arango/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ export class Arango implements DatabaseProvider {
}
}

if (isEmptyish(filterQuery)) {
filterQuery = true;
if (isNullish(filterQuery) || isEmptyish(filterQuery)) {
filterQuery = '';
}
else {
filterQuery = toArray(filterQuery);
filterResult = buildFilter(filterQuery);
filterQuery = filterResult.q;
filterQuery = `FILTER ${filterResult.q}`;
}

// if search options are set build search query
Expand Down Expand Up @@ -104,7 +104,7 @@ export class Arango implements DatabaseProvider {
if (!isEmptyish(searchQueries)) {
queryStrings.push(`SEARCH ${searchQueries.join(' OR ')}`);
}
queryStrings.push(`FILTER ${filterQuery}`);
queryStrings.push(filterQuery);
queryStrings.push(...customFilters);
queryStrings.push(sortQuery, limitQuery, returnQuery);

Expand All @@ -122,7 +122,7 @@ export class Arango implements DatabaseProvider {
if (!isEmptyish(customFilters) && opts.customArguments) {
bindVars.customArguments = opts.customArguments;
}
const queryString = queryStrings.filter(s => !isEmptyish(s)).join(' ');
const queryString = queryStrings.filter(s => !isNullish(s) && !isEmptyish(s)).join(' ');
this.logger.info(queryString);
const res = searchQueries
? await this.db.query(queryString, bindVars)
Expand Down Expand Up @@ -197,8 +197,11 @@ export class Arango implements DatabaseProvider {
async update(collectionName: string, updateDocuments: any): Promise<any> {
const documents = clone(updateDocuments) as ArangoDocument;
const updateDocsResponse = [];
if (isNullish(collectionName) ||
!isString(collectionName) || isEmptyish(collectionName)) {
if (
isNullish(collectionName)
|| !isString(collectionName)
|| isEmptyish(collectionName)
) {
throw new LoggedError(this.logger, 'invalid or missing collection argument for update operation');
}
if (isNullish(documents)) {
Expand Down Expand Up @@ -250,8 +253,10 @@ export class Arango implements DatabaseProvider {
* @param {Object|Array.Object} documents
*/
async upsert(collectionName: string, documents: any): Promise<any> {
if (isNullish(collectionName) ||
!isString(collectionName) || isEmptyish(collectionName)) {
if (isNullish(collectionName)
|| !isString(collectionName)
|| isEmptyish(collectionName)
) {
throw new LoggedError(this.logger, 'invalid or missing collection argument for upsert operation');
}
if (isNullish(documents)) {
Expand Down
28 changes: 14 additions & 14 deletions packages/chassis-srv/src/database/provider/arango/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,39 +171,39 @@ export const buildComparison = (filter: any, op: string, index: number,
export const buildField = (key: any, value: any, index: number, bindVarsMap: any): string => {
const bindValueVar = `@value${index}`;
const bindValueVarWithOutPrefix = `value${index}`;
if (isString(value) || isBoolean(value) || isNumber(value || isDate(value))) {
if (isString(value) || isBoolean(value) || isNumber(value) || isDate(value)) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value);
return autoCastKey(key, value) + ' == ' + bindValueVar;
}
if (!isNullish(value.$eq)) {
if (value?.$eq) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$eq);
return autoCastKey(key, value) + ' == ' + bindValueVar;
}
if (value.$gt) {
if (value?.$gt) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$gt);
return autoCastKey(key, value) + ' > ' + bindValueVar;
}
if (value.$gte) {
if (value?.$gte) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$gte);
return autoCastKey(key, value) + ' >= ' + bindValueVar;
}
if (value.$lt) {
if (value?.$lt) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$lt);
return autoCastKey(key, value) + ' < ' + bindValueVar;
}
if (value.$lte) {
if (value?.$lte) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$lte);
return autoCastKey(key, value) + ' <= ' + bindValueVar;
}
if (!isNullish(value.$ne)) {
if (value?.$ne) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$ne);
return autoCastKey(key, value) + ' != ' + bindValueVar;
}
if (value.$inVal) {
if (value?.$inVal) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$inVal);
return bindValueVar + ' IN ' + autoCastKey(key, value);
}
if (value.$in) {
if (value?.$in) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$in);
if (isString(value.$in)) {
// if it is a field which should be an array
Expand All @@ -213,16 +213,16 @@ export const buildField = (key: any, value: any, index: number, bindVarsMap: any
// assuming it is a list of provided values
return autoCastKey(key, value) + ' IN ' + bindValueVar;
}
if (value.$nin) {
if (value?.$nin) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$nin);
return autoCastKey(key, value) + ' NOT IN ' + bindValueVar;
}
if (value.$iLike) {
if (value?.$iLike) {
bindVarsMap[bindValueVarWithOutPrefix] = autoCastValue(key, value.$iLike);
// @param 'true' is for case insensitive
return ' LIKE (' + autoCastKey(key, value) + ',' + bindValueVar + ', true)';
}
if (!isNullish(value.$not)) {
if (value?.$not) {
const temp = buildField(key, value.$not, index, bindVarsMap);
return `!(${temp})`;
}
Expand All @@ -231,7 +231,7 @@ export const buildField = (key: any, value: any, index: number, bindVarsMap: any
// will always search for an empty string
return autoCastKey(key, '') + ' == ' + bindValueVar;
}
if (!isNullish((value as any).$startswith)) {
if (value?.$startswith) {
const bindValueVar1 = `@value${index + 1}`;
const bindValueVarWithOutPrefix1 = `value${index + 1}`;
const k = autoCastKey(key);
Expand All @@ -240,7 +240,7 @@ export const buildField = (key: any, value: any, index: number, bindVarsMap: any
bindVarsMap[bindValueVarWithOutPrefix1] = v;
return `LEFT(${k}, LENGTH(${bindValueVar})) == ${bindValueVar1}`;
}
if (!isNullish((value as any).$endswith)) {
if (value?.$endswith) {
const bindValueVar1 = `@value${index + 1}`;
const bindValueVarWithOutPrefix1 = `value${index + 1}`;
const k = autoCastKey(key);
Expand Down
Loading