exists #13

Merged
jusax23 merged 2 commits from dev into main 2023-02-26 16:38:36 +01:00
4 changed files with 21 additions and 2 deletions

View file

@ -1,6 +1,6 @@
{
"name": "dblang",
"version": "1.0.0",
"version": "0.6.2",
"description": "",
"main": "dist/db.js",
"types": "dist/db.d.ts",

View file

@ -238,6 +238,7 @@ BooleanModifier:
- `le(v1, v2, ...)`
- `not(v1)`
- `like(v1, v2)`
- `exists(s)`
NumberModifier:
- `plus(v1, v2, ...)`
@ -248,7 +249,7 @@ NumberModifier:
StringModifier:
- `concat(v1, v2, ...)`
(v\* = string, number, boolean, null, Modifier, Aggregation, select Query, Attribute)
(v\* = string, number, boolean, null, Modifier, Aggregation, select Query, Attribute; s = selectQuery)
#### Joins

View file

@ -751,6 +751,22 @@ export class Handler {
}
return builder;
},
exists: (handler: Handler, a: allModifierInput[]):QueryBuilder =>{
let e = a[0];
if (e instanceof Attribute || e instanceof AttributeAlias) return new QueryBuilder([{ data: "exists (" + e.getString(handler) + ")" }])
if (e instanceof Modifier || e instanceof selectQuery || e instanceof Aggregation) {
const builder = new QueryBuilder();
builder.addCode("exists (");
builder.append(e.serialize(handler));
builder.addCode(")");
return builder;
}
return new QueryBuilder([
{ data: "exists (" },
{ inject: true, data: e },
{ data: ")" }
]);
},
concat: (handler: Handler, a: allModifierInput[]): QueryBuilder => {
const builder = new QueryBuilder();
builder.addCode("CONCAT(");

View file

@ -20,6 +20,8 @@ export const not = (arg: allModifierInput) => new BooleanModifier("not", [arg]);
export const like = (a: allModifierInput, b: allModifierInput) => new BooleanModifier("like", [a, b]);
export const regexp = (a: allModifierInput, b: allModifierInput) => new BooleanModifier("regexp", [a, b]);
export const exists = (q: selectQuery) => new BooleanModifier("exists", [q]);
export const concat = (...args: allModifierInput[]) => new StringModifier("concat", args);
//aggregations