rado 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/Expr.d.ts +2 -2
- package/dist/lib/Expr.js +4 -4
- package/dist/lib/Formatter.js +26 -12
- package/dist/lib/Ops.d.ts +1 -2
- package/dist/lib/Ops.js +5 -14
- package/dist/lib/Statement.d.ts +1 -1
- package/dist/lib/Statement.js +2 -0
- package/dist/lib/Target.d.ts +14 -6
- package/dist/lib/Target.js +9 -4
- package/package.json +1 -1
package/dist/lib/Expr.d.ts
CHANGED
|
@@ -125,8 +125,8 @@ export declare class Expr<T> {
|
|
|
125
125
|
isNotNull(): Expr<boolean>;
|
|
126
126
|
isNot(that: EV<T>): Expr<boolean>;
|
|
127
127
|
is(that: EV<T> | Cursor.SelectSingle<T>): Expr<boolean>;
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
in(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
|
|
129
|
+
notIn(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
|
|
130
130
|
add(this: Expr<number>, that: EV<number>): Expr<number>;
|
|
131
131
|
substract(this: Expr<number>, that: EV<number>): Expr<number>;
|
|
132
132
|
multiply(this: Expr<number>, that: EV<number>): Expr<number>;
|
package/dist/lib/Expr.js
CHANGED
|
@@ -187,10 +187,10 @@ var _Expr = class {
|
|
|
187
187
|
return this.isNull();
|
|
188
188
|
return binop(this, "Equals" /* Equals */, that);
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
in(that) {
|
|
191
191
|
return binop(this, "In" /* In */, that);
|
|
192
192
|
}
|
|
193
|
-
|
|
193
|
+
notIn(that) {
|
|
194
194
|
return binop(this, "NotIn" /* NotIn */, that);
|
|
195
195
|
}
|
|
196
196
|
add(that) {
|
|
@@ -242,7 +242,7 @@ var _Expr = class {
|
|
|
242
242
|
}
|
|
243
243
|
filter(fn) {
|
|
244
244
|
const alias = `__${Math.random().toString(36).slice(2, 9)}`;
|
|
245
|
-
const target = Target.
|
|
245
|
+
const target = Target.Expr(this.expr, alias);
|
|
246
246
|
return new _Expr(
|
|
247
247
|
ExprData.Filter(
|
|
248
248
|
target,
|
|
@@ -252,7 +252,7 @@ var _Expr = class {
|
|
|
252
252
|
}
|
|
253
253
|
map(fn) {
|
|
254
254
|
const alias = `__${Math.random().toString(36).slice(2, 9)}`;
|
|
255
|
-
const target = Target.
|
|
255
|
+
const target = Target.Expr(this.expr, alias);
|
|
256
256
|
return new _Expr(
|
|
257
257
|
ExprData.Map(
|
|
258
258
|
target,
|
package/dist/lib/Formatter.js
CHANGED
|
@@ -316,7 +316,7 @@ var Formatter = class {
|
|
|
316
316
|
case TargetType.Table:
|
|
317
317
|
stmt.identifier(target.table.name);
|
|
318
318
|
if (target.table.alias)
|
|
319
|
-
stmt.
|
|
319
|
+
stmt.raw("AS").addIdentifier(target.table.alias);
|
|
320
320
|
return stmt;
|
|
321
321
|
case TargetType.Join:
|
|
322
322
|
const { left, right, joinType } = target;
|
|
@@ -326,8 +326,15 @@ var Formatter = class {
|
|
|
326
326
|
stmt.add("ON");
|
|
327
327
|
this.formatExprValue(ctx, target.on);
|
|
328
328
|
return stmt;
|
|
329
|
-
|
|
330
|
-
|
|
329
|
+
case TargetType.Query:
|
|
330
|
+
stmt.openParenthesis();
|
|
331
|
+
this.format(ctx, target.query);
|
|
332
|
+
stmt.closeParenthesis();
|
|
333
|
+
if (target.alias)
|
|
334
|
+
stmt.raw("AS").addIdentifier(target.alias);
|
|
335
|
+
return stmt;
|
|
336
|
+
case TargetType.Expr:
|
|
337
|
+
throw new Error("Cannot format expression as target");
|
|
331
338
|
}
|
|
332
339
|
}
|
|
333
340
|
formatWhere(ctx, expr) {
|
|
@@ -541,10 +548,10 @@ var Formatter = class {
|
|
|
541
548
|
stmt.raw("exists").space();
|
|
542
549
|
return this.formatExprValue(ctx, expr.params[0]);
|
|
543
550
|
} else {
|
|
544
|
-
stmt.
|
|
545
|
-
for (const param of stmt.
|
|
551
|
+
stmt.identifier(expr.method);
|
|
552
|
+
for (const param of stmt.call(expr.params))
|
|
546
553
|
this.formatExprValue(ctx, param);
|
|
547
|
-
return stmt
|
|
554
|
+
return stmt;
|
|
548
555
|
}
|
|
549
556
|
}
|
|
550
557
|
case ExprType.Query:
|
|
@@ -578,7 +585,8 @@ var Formatter = class {
|
|
|
578
585
|
)
|
|
579
586
|
)
|
|
580
587
|
);
|
|
581
|
-
case TargetType.
|
|
588
|
+
case TargetType.Query:
|
|
589
|
+
case TargetType.Expr:
|
|
582
590
|
return stmt.identifier(expr.target.alias).raw(".value");
|
|
583
591
|
default:
|
|
584
592
|
throw new Error(`Cannot select from ${expr.target.type}`);
|
|
@@ -599,10 +607,13 @@ var Formatter = class {
|
|
|
599
607
|
case ExprType.Filter: {
|
|
600
608
|
const { target, condition } = expr;
|
|
601
609
|
switch (target.type) {
|
|
602
|
-
case TargetType.
|
|
610
|
+
case TargetType.Expr:
|
|
603
611
|
stmt.openParenthesis().raw("SELECT json_group_array(json(result)) FROM ").openParenthesis().raw("SELECT value AS result").add("FROM json_each").openParenthesis();
|
|
604
|
-
this.
|
|
605
|
-
stmt.closeParenthesis()
|
|
612
|
+
this.formatExprJson(ctx, target.expr);
|
|
613
|
+
stmt.closeParenthesis();
|
|
614
|
+
if (target.alias)
|
|
615
|
+
stmt.add("AS").addIdentifier(target.alias);
|
|
616
|
+
stmt.add("WHERE").space();
|
|
606
617
|
this.formatExprValue(ctx, condition);
|
|
607
618
|
return stmt.closeParenthesis().closeParenthesis();
|
|
608
619
|
default:
|
|
@@ -612,11 +623,14 @@ var Formatter = class {
|
|
|
612
623
|
case ExprType.Map: {
|
|
613
624
|
const { target, result } = expr;
|
|
614
625
|
switch (target.type) {
|
|
615
|
-
case TargetType.
|
|
626
|
+
case TargetType.Expr:
|
|
616
627
|
stmt.openParenthesis().raw("SELECT json_group_array(json(result)) FROM ").openParenthesis().raw("SELECT").space();
|
|
617
628
|
this.formatExprJson(ctx, result).add("AS result").add("FROM json_each").openParenthesis();
|
|
618
629
|
this.formatExprJson(ctx, target.expr);
|
|
619
|
-
|
|
630
|
+
stmt.closeParenthesis();
|
|
631
|
+
if (target.alias)
|
|
632
|
+
stmt.add("AS").addIdentifier(target.alias);
|
|
633
|
+
return stmt.closeParenthesis().closeParenthesis();
|
|
620
634
|
default:
|
|
621
635
|
throw new Error("todo");
|
|
622
636
|
}
|
package/dist/lib/Ops.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Cursor } from './Cursor';
|
|
2
2
|
import { Table } from './Table';
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function selectFirst<Row>(table: Table<Row>): Cursor.SelectSingle<Row>;
|
|
3
|
+
export declare function from<Row>(source: Table<Row> | Cursor.SelectMultiple<Row>): Cursor.SelectMultiple<Row>;
|
|
5
4
|
export declare function update<Row>(table: Table<Row>): Cursor.Update<Row>;
|
|
6
5
|
export declare function insertInto<Row>(table: Table<Row>): Cursor.Insert<Row>;
|
|
7
6
|
export declare function deleteFrom<Row>(table: Table<Row>): Cursor.Delete;
|
package/dist/lib/Ops.js
CHANGED
|
@@ -4,20 +4,12 @@ import { ExprData } from "./Expr.js";
|
|
|
4
4
|
import { Query } from "./Query.js";
|
|
5
5
|
import { Schema } from "./Schema.js";
|
|
6
6
|
import { Target } from "./Target.js";
|
|
7
|
-
function
|
|
7
|
+
function from(source) {
|
|
8
|
+
const target = "schema" in source ? Target.Table(source.schema()) : Target.Query(source.query());
|
|
8
9
|
return new Cursor.SelectMultiple(
|
|
9
10
|
Query.Select({
|
|
10
|
-
from:
|
|
11
|
-
selection: ExprData.Row(
|
|
12
|
-
})
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
function selectFirst(table) {
|
|
16
|
-
return new Cursor.SelectSingle(
|
|
17
|
-
Query.Select({
|
|
18
|
-
from: Target.Table(table.schema()),
|
|
19
|
-
selection: ExprData.Row(Target.Table(table.schema())),
|
|
20
|
-
singleResult: true
|
|
11
|
+
from: target,
|
|
12
|
+
selection: ExprData.Row(target)
|
|
21
13
|
})
|
|
22
14
|
);
|
|
23
15
|
}
|
|
@@ -38,8 +30,7 @@ function create(...tables) {
|
|
|
38
30
|
export {
|
|
39
31
|
create,
|
|
40
32
|
deleteFrom,
|
|
33
|
+
from,
|
|
41
34
|
insertInto,
|
|
42
|
-
selectAll,
|
|
43
|
-
selectFirst,
|
|
44
35
|
update
|
|
45
36
|
};
|
package/dist/lib/Statement.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export declare class Statement {
|
|
|
43
43
|
raw(query: string): this;
|
|
44
44
|
openParenthesis(): this;
|
|
45
45
|
closeParenthesis(): this;
|
|
46
|
-
call<T>(parts: Array<T>, separator?: string): Generator<T,
|
|
46
|
+
call<T>(parts: Array<T>, separator?: string): Generator<T, this | undefined, unknown>;
|
|
47
47
|
separate<T>(parts: Array<T>, separator?: string): Generator<T, void, unknown>;
|
|
48
48
|
isEmpty(): boolean;
|
|
49
49
|
compile(sanitizer: Sanitizer, formatInline?: boolean): CompiledStatement;
|
package/dist/lib/Statement.js
CHANGED
|
@@ -99,6 +99,8 @@ var Statement = class {
|
|
|
99
99
|
return this.dedent().newline().raw(")");
|
|
100
100
|
}
|
|
101
101
|
*call(parts, separator = SEPARATE) {
|
|
102
|
+
if (parts.length === 0)
|
|
103
|
+
return this.raw("()");
|
|
102
104
|
this.openParenthesis();
|
|
103
105
|
yield* this.separate(parts, separator);
|
|
104
106
|
this.closeParenthesis();
|
package/dist/lib/Target.d.ts
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { ExprData } from './Expr';
|
|
2
|
+
import { Query as QueryData } from './Query';
|
|
2
3
|
import { Schema } from './Schema';
|
|
3
4
|
export declare enum TargetType {
|
|
4
|
-
|
|
5
|
+
Expr = "Expr",
|
|
6
|
+
Query = "Query",
|
|
5
7
|
Table = "Table",
|
|
6
8
|
Join = "Join"
|
|
7
9
|
}
|
|
8
|
-
export type Target = Target.
|
|
10
|
+
export type Target = Target.Expr | Target.Query | Target.Table | Target.Join;
|
|
9
11
|
export declare namespace Target {
|
|
10
|
-
interface
|
|
11
|
-
type: TargetType.
|
|
12
|
+
interface Expr {
|
|
13
|
+
type: TargetType.Expr;
|
|
12
14
|
expr: ExprData;
|
|
13
|
-
alias
|
|
15
|
+
alias?: string;
|
|
14
16
|
}
|
|
15
|
-
function
|
|
17
|
+
function Expr(expr: ExprData, alias?: string): Expr;
|
|
18
|
+
interface Query {
|
|
19
|
+
type: TargetType.Query;
|
|
20
|
+
query: QueryData;
|
|
21
|
+
alias?: string;
|
|
22
|
+
}
|
|
23
|
+
function Query(query: QueryData, alias?: string): Query;
|
|
16
24
|
interface Table {
|
|
17
25
|
type: TargetType.Table;
|
|
18
26
|
table: Schema;
|
package/dist/lib/Target.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
// src/lib/Target.ts
|
|
2
2
|
var TargetType = /* @__PURE__ */ ((TargetType2) => {
|
|
3
|
-
TargetType2["
|
|
3
|
+
TargetType2["Expr"] = "Expr";
|
|
4
|
+
TargetType2["Query"] = "Query";
|
|
4
5
|
TargetType2["Table"] = "Table";
|
|
5
6
|
TargetType2["Join"] = "Join";
|
|
6
7
|
return TargetType2;
|
|
7
8
|
})(TargetType || {});
|
|
8
9
|
var Target;
|
|
9
10
|
((Target2) => {
|
|
10
|
-
function
|
|
11
|
-
return { type: "
|
|
11
|
+
function Expr(expr, alias) {
|
|
12
|
+
return { type: "Expr" /* Expr */, expr, alias };
|
|
12
13
|
}
|
|
13
|
-
Target2.
|
|
14
|
+
Target2.Expr = Expr;
|
|
15
|
+
function Query(query, alias) {
|
|
16
|
+
return { type: "Query" /* Query */, query, alias };
|
|
17
|
+
}
|
|
18
|
+
Target2.Query = Query;
|
|
14
19
|
function Table(table) {
|
|
15
20
|
return { type: "Table" /* Table */, table };
|
|
16
21
|
}
|