Compare commits

..

2 commits

Author SHA1 Message Date
3a01244199 Merge pull request 'coalesce' (#21) from dev into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #21
2023-03-24 21:27:48 +01:00
23ebf3c75a
coalesce
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-24 21:27:10 +01:00
2 changed files with 20 additions and 1 deletions

View file

@ -825,7 +825,25 @@ export class Handler {
} }
builder.addCode(")"); builder.addCode(")");
return builder; return builder;
},
coalesce: (handler: Handler, a: allModifierInput[]): QueryBuilder => {
const builder = new QueryBuilder();
builder.addCode("COALESCE(");
for (let i = 0; i < a.length; i++) {
const e = a[i];
if (e instanceof Attribute || e instanceof AttributeAlias) builder.addCode(e.getString());
else if (e instanceof Alias)
builder.addCode(handler.builders.escapeID(e.toString()));
else if (e instanceof Modifier || e instanceof selectQuery || e instanceof Aggregation) {
builder.append(e.serialize(handler));
} else {
builder.addInjection(e);
} }
if (i < a.length - 1) builder.addCode(", ");
}
builder.addCode(")");
return builder;
},
} }
datatypes = { datatypes = {

View file

@ -24,6 +24,7 @@ export const regexp = (a: allModifierInput, b: allModifierInput) => new BooleanM
export const exists = (q: selectQuery) => new BooleanModifier("exists", [q]); export const exists = (q: selectQuery) => new BooleanModifier("exists", [q]);
export const concat = (...args: allModifierInput[]) => new StringModifier("concat", args); export const concat = (...args: allModifierInput[]) => new StringModifier("concat", args);
export const coalesce = (...args: allModifierInput[]) => new StringModifier("coalesce", args);
//aggregations //aggregations
export const count = (a: Attribute) => new Aggregation("count", a); export const count = (a: Attribute) => new Aggregation("count", a);