rado 0.2.20 → 0.2.22
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/define/Column.d.ts +4 -3
- package/dist/define/Column.js +12 -17
- package/dist/define/Expr.d.ts +64 -79
- package/dist/define/Expr.js +117 -76
- package/dist/define/Functions.js +1 -1
- package/dist/define/Ops.d.ts +7 -7
- package/dist/define/Ops.js +11 -12
- package/dist/define/Param.d.ts +15 -13
- package/dist/define/Param.js +18 -9
- package/dist/define/Query.d.ts +150 -50
- package/dist/define/Query.js +400 -53
- package/dist/define/Schema.d.ts +5 -4
- package/dist/define/Schema.js +40 -28
- package/dist/define/Selection.d.ts +2 -2
- package/dist/define/Sql.d.ts +6 -0
- package/dist/define/Sql.js +22 -0
- package/dist/define/Table.d.ts +6 -5
- package/dist/define/Table.js +60 -94
- package/dist/define/Target.d.ts +21 -21
- package/dist/define/Target.js +31 -14
- package/dist/driver/bun-sqlite.js +3 -4
- package/dist/driver/sqlite3.d.ts +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/Driver.d.ts +25 -26
- package/dist/lib/Driver.js +54 -36
- package/dist/lib/Formatter.d.ts +32 -21
- package/dist/lib/Formatter.js +229 -196
- package/dist/lib/Statement.js +1 -1
- package/dist/sqlite/SqliteFormatter.d.ts +1 -1
- package/dist/sqlite/SqliteFormatter.js +15 -19
- package/dist/sqlite/SqliteFunctions.d.ts +3 -3
- package/dist/sqlite/SqliteSchema.d.ts +3 -3
- package/dist/sqlite/SqliteSchema.js +3 -3
- package/dist/util/Callable.d.ts +3 -1
- package/dist/util/Callable.js +7 -12
- package/package.json +4 -4
- package/dist/define/Cursor.d.ts +0 -108
- package/dist/define/Cursor.js +0 -338
package/dist/define/Table.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { Column, ColumnData, OptionalColumn, PrimaryColumn } from './Column';
|
|
2
|
-
import { Cursor } from './Cursor';
|
|
3
2
|
import { EV } from './Expr';
|
|
4
3
|
import { Index, IndexData } from './Index';
|
|
4
|
+
import { Query } from './Query';
|
|
5
5
|
import { Selection } from './Selection';
|
|
6
6
|
declare const DATA: unique symbol;
|
|
7
7
|
declare const META: unique symbol;
|
|
8
8
|
interface TableDefinition {
|
|
9
9
|
}
|
|
10
|
-
export
|
|
10
|
+
export declare class TableData {
|
|
11
11
|
name: string;
|
|
12
12
|
alias?: string;
|
|
13
13
|
definition: TableDefinition;
|
|
14
14
|
columns: Record<string, ColumnData>;
|
|
15
|
-
meta()
|
|
15
|
+
meta: () => {
|
|
16
16
|
indexes: Record<string, IndexData>;
|
|
17
17
|
};
|
|
18
|
+
constructor(data: TableData);
|
|
18
19
|
}
|
|
19
20
|
export interface TableInstance<Definition> {
|
|
20
21
|
(conditions: {
|
|
21
22
|
[K in keyof Definition]?: Definition[K] extends Column<infer V> ? EV<V> : never;
|
|
22
|
-
}):
|
|
23
|
-
(...conditions: Array<EV<boolean>>):
|
|
23
|
+
}): Query.TableSelect<Definition>;
|
|
24
|
+
(...conditions: Array<EV<boolean>>): Query.TableSelect<Definition>;
|
|
24
25
|
}
|
|
25
26
|
export declare class TableInstance<Definition> {
|
|
26
27
|
[Selection.TableType](): Table.Select<Definition>;
|
package/dist/define/Table.js
CHANGED
|
@@ -3,40 +3,33 @@ import {
|
|
|
3
3
|
Column,
|
|
4
4
|
ColumnType
|
|
5
5
|
} from "./Column.js";
|
|
6
|
-
import { Cursor } from "./Cursor.js";
|
|
7
6
|
import { BinOpType, Expr, ExprData } from "./Expr.js";
|
|
7
|
+
import { Query } from "./Query.js";
|
|
8
8
|
import { Target } from "./Target.js";
|
|
9
|
-
var DATA = Symbol("Table.Data");
|
|
10
|
-
var META = Symbol("Table.Meta");
|
|
11
9
|
var {
|
|
10
|
+
assign,
|
|
12
11
|
keys,
|
|
13
12
|
entries,
|
|
14
13
|
fromEntries,
|
|
15
14
|
getOwnPropertyDescriptors,
|
|
16
|
-
assign,
|
|
17
15
|
getPrototypeOf,
|
|
18
16
|
setPrototypeOf,
|
|
19
|
-
|
|
20
|
-
getOwnPropertyNames
|
|
17
|
+
defineProperty
|
|
21
18
|
} = Object;
|
|
22
|
-
var
|
|
19
|
+
var DATA = Symbol("Table.Data");
|
|
20
|
+
var META = Symbol("Table.Meta");
|
|
21
|
+
var TableData = class {
|
|
22
|
+
constructor(data) {
|
|
23
|
+
assign(this, data);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
23
26
|
var Table;
|
|
24
27
|
((Table2) => {
|
|
25
28
|
Table2.Data = DATA;
|
|
26
29
|
Table2.Meta = META;
|
|
27
30
|
})(Table || (Table = {}));
|
|
28
|
-
function keysOf(input) {
|
|
29
|
-
const methods = [];
|
|
30
|
-
while (input = getPrototypeOf(input)) {
|
|
31
|
-
const keys2 = ownKeys(input);
|
|
32
|
-
for (const key of keys2)
|
|
33
|
-
if (typeof key === "string")
|
|
34
|
-
methods.push(key);
|
|
35
|
-
}
|
|
36
|
-
return methods;
|
|
37
|
-
}
|
|
38
31
|
function createTable(data) {
|
|
39
|
-
const target = Target.Table(data);
|
|
32
|
+
const target = new Target.Table(data);
|
|
40
33
|
const call = {
|
|
41
34
|
[data.name]: function(...args) {
|
|
42
35
|
const isConditionalRecord = args.length === 1 && !Expr.isExpr(args[0]);
|
|
@@ -45,67 +38,35 @@ function createTable(data) {
|
|
|
45
38
|
if (!column)
|
|
46
39
|
throw new Error(`Column ${key} not found`);
|
|
47
40
|
return new Expr(
|
|
48
|
-
ExprData.BinOp(
|
|
41
|
+
new ExprData.BinOp(
|
|
49
42
|
BinOpType.Equals,
|
|
50
|
-
ExprData.Field(ExprData.Row(target), key),
|
|
43
|
+
new ExprData.Field(new ExprData.Row(target), key),
|
|
51
44
|
ExprData.create(value)
|
|
52
45
|
)
|
|
53
46
|
);
|
|
54
47
|
}) : args;
|
|
55
|
-
return new
|
|
48
|
+
return new Query.TableSelect(data, conditions);
|
|
56
49
|
}
|
|
57
50
|
}[data.name];
|
|
58
51
|
const cols = keys(data.columns);
|
|
59
|
-
const
|
|
60
|
-
const row = ExprData.Row(target);
|
|
52
|
+
const row = new ExprData.Row(target);
|
|
61
53
|
const expressions = fromEntries(
|
|
62
54
|
cols.map((name) => {
|
|
63
|
-
let expr = new Expr(ExprData.Field(row, name));
|
|
55
|
+
let expr = new Expr(new ExprData.Field(row, name));
|
|
64
56
|
if (data.columns[name].type === ColumnType.Json)
|
|
65
57
|
expr = expr.dynamic();
|
|
66
58
|
return [name, expr];
|
|
67
59
|
})
|
|
68
60
|
);
|
|
69
61
|
const toExpr = () => new Expr(row);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return expressions[key] || data.definition[key];
|
|
79
|
-
};
|
|
80
|
-
var get = get2;
|
|
81
|
-
res = new Proxy(call, {
|
|
82
|
-
get(target2, key) {
|
|
83
|
-
if (key === DATA)
|
|
84
|
-
return data;
|
|
85
|
-
if (key === Expr.ToExpr)
|
|
86
|
-
return toExpr;
|
|
87
|
-
return get2(key);
|
|
88
|
-
},
|
|
89
|
-
ownKeys(target2) {
|
|
90
|
-
return ownKeys2;
|
|
91
|
-
},
|
|
92
|
-
getOwnPropertyDescriptor(target2, key) {
|
|
93
|
-
const value = get2(key);
|
|
94
|
-
const descriptor = getOwnPropertyDescriptor(call, key);
|
|
95
|
-
const res2 = descriptor ? {
|
|
96
|
-
...descriptor,
|
|
97
|
-
enumerable: cols.includes(key)
|
|
98
|
-
} : {
|
|
99
|
-
enumerable: true,
|
|
100
|
-
configurable: true
|
|
101
|
-
};
|
|
102
|
-
if (value !== void 0)
|
|
103
|
-
res2.value = value;
|
|
104
|
-
return res2;
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
return res;
|
|
62
|
+
delete call.name;
|
|
63
|
+
delete call.length;
|
|
64
|
+
for (const [key, value] of entries(expressions))
|
|
65
|
+
defineProperty(call, key, { value, enumerable: true, configurable: true });
|
|
66
|
+
defineProperty(call, DATA, { value: data, enumerable: false });
|
|
67
|
+
defineProperty(call, Expr.ToExpr, { value: toExpr, enumerable: false });
|
|
68
|
+
setPrototypeOf(call, getPrototypeOf(data.definition));
|
|
69
|
+
return call;
|
|
109
70
|
}
|
|
110
71
|
function table(define) {
|
|
111
72
|
const names = keys(define);
|
|
@@ -115,39 +76,43 @@ function table(define) {
|
|
|
115
76
|
const target = define[name];
|
|
116
77
|
const definition = "prototype" in target ? new target() : target;
|
|
117
78
|
const columns = definition;
|
|
118
|
-
const res = createTable(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
79
|
+
const res = createTable(
|
|
80
|
+
new TableData({
|
|
81
|
+
name,
|
|
82
|
+
definition,
|
|
83
|
+
columns: fromEntries(
|
|
84
|
+
entries(getOwnPropertyDescriptors(columns)).map(
|
|
85
|
+
([name2, descriptor]) => {
|
|
86
|
+
const column = columns[name2];
|
|
87
|
+
const data = column[Column.Data];
|
|
88
|
+
if (!data.type)
|
|
89
|
+
throw new Error(`Column ${name2} has no type`);
|
|
90
|
+
return [
|
|
91
|
+
name2,
|
|
92
|
+
{
|
|
93
|
+
...data,
|
|
94
|
+
type: data.type,
|
|
95
|
+
name: data.name || name2,
|
|
96
|
+
enumerable: descriptor.enumerable
|
|
97
|
+
}
|
|
98
|
+
];
|
|
134
99
|
}
|
|
135
|
-
];
|
|
136
|
-
})
|
|
137
|
-
),
|
|
138
|
-
meta() {
|
|
139
|
-
const createMeta = res[table.meta];
|
|
140
|
-
const meta = createMeta ? createMeta.apply(res) : {};
|
|
141
|
-
return {
|
|
142
|
-
indexes: fromEntries(
|
|
143
|
-
entries(meta?.indexes || {}).map(([key, index]) => {
|
|
144
|
-
const indexName = `${name}.${key}`;
|
|
145
|
-
return [indexName, { name: indexName, ...index.data }];
|
|
146
|
-
})
|
|
147
100
|
)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
101
|
+
),
|
|
102
|
+
meta() {
|
|
103
|
+
const createMeta = res[table.meta];
|
|
104
|
+
const meta = createMeta ? createMeta.apply(res) : {};
|
|
105
|
+
return {
|
|
106
|
+
indexes: fromEntries(
|
|
107
|
+
entries(meta?.indexes || {}).map(([key, index]) => {
|
|
108
|
+
const indexName = `${name}.${key}`;
|
|
109
|
+
return [indexName, { name: indexName, ...index.data }];
|
|
110
|
+
})
|
|
111
|
+
)
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
);
|
|
151
116
|
return res;
|
|
152
117
|
}
|
|
153
118
|
((table2) => {
|
|
@@ -155,6 +120,7 @@ function table(define) {
|
|
|
155
120
|
})(table || (table = {}));
|
|
156
121
|
export {
|
|
157
122
|
Table,
|
|
123
|
+
TableData,
|
|
158
124
|
createTable,
|
|
159
125
|
table
|
|
160
126
|
};
|
package/dist/define/Target.d.ts
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { ExprData } from './Expr';
|
|
2
|
-
import {
|
|
3
|
-
import { TableData } from './Table';
|
|
1
|
+
import type { ExprData } from './Expr';
|
|
2
|
+
import type { QueryData } from './Query';
|
|
3
|
+
import type { TableData } from './Table';
|
|
4
4
|
export declare enum TargetType {
|
|
5
|
-
Expr = "Expr",
|
|
6
|
-
Query = "Query",
|
|
7
|
-
Table = "Table",
|
|
8
|
-
Join = "Join"
|
|
5
|
+
Expr = "Target.Expr",
|
|
6
|
+
Query = "Target.Query",
|
|
7
|
+
Table = "Target.Table",
|
|
8
|
+
Join = "Target.Join"
|
|
9
9
|
}
|
|
10
10
|
export type Target = Target.Expr | Target.Query | Target.Table | Target.Join;
|
|
11
11
|
export declare namespace Target {
|
|
12
|
-
|
|
13
|
-
type: TargetType.Expr;
|
|
12
|
+
class Expr {
|
|
14
13
|
expr: ExprData;
|
|
15
|
-
alias?: string;
|
|
14
|
+
alias?: string | undefined;
|
|
15
|
+
type: TargetType.Expr;
|
|
16
|
+
constructor(expr: ExprData, alias?: string | undefined);
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
interface Query {
|
|
19
|
-
type: TargetType.Query;
|
|
18
|
+
class Query {
|
|
20
19
|
query: QueryData;
|
|
21
|
-
alias?: string;
|
|
20
|
+
alias?: string | undefined;
|
|
21
|
+
type: TargetType.Query;
|
|
22
|
+
constructor(query: QueryData, alias?: string | undefined);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
interface Table {
|
|
25
|
-
type: TargetType.Table;
|
|
24
|
+
class Table {
|
|
26
25
|
table: TableData;
|
|
26
|
+
type: TargetType.Table;
|
|
27
|
+
constructor(table: TableData);
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
interface Join {
|
|
30
|
-
type: TargetType.Join;
|
|
29
|
+
class Join {
|
|
31
30
|
left: Target;
|
|
32
31
|
right: Target;
|
|
33
32
|
joinType: 'left' | 'inner';
|
|
34
33
|
on: ExprData;
|
|
34
|
+
type: TargetType.Join;
|
|
35
|
+
constructor(left: Target, right: Target, joinType: 'left' | 'inner', on: ExprData);
|
|
35
36
|
}
|
|
36
|
-
function Join(left: Target, right: Target, joinType: 'left' | 'inner', on: ExprData): Join;
|
|
37
37
|
function source(from: Target): TableData | undefined;
|
|
38
38
|
}
|
package/dist/define/Target.js
CHANGED
|
@@ -1,34 +1,51 @@
|
|
|
1
1
|
// src/define/Target.ts
|
|
2
2
|
var TargetType = /* @__PURE__ */ ((TargetType2) => {
|
|
3
|
-
TargetType2["Expr"] = "Expr";
|
|
4
|
-
TargetType2["Query"] = "Query";
|
|
5
|
-
TargetType2["Table"] = "Table";
|
|
6
|
-
TargetType2["Join"] = "Join";
|
|
3
|
+
TargetType2["Expr"] = "Target.Expr";
|
|
4
|
+
TargetType2["Query"] = "Target.Query";
|
|
5
|
+
TargetType2["Table"] = "Target.Table";
|
|
6
|
+
TargetType2["Join"] = "Target.Join";
|
|
7
7
|
return TargetType2;
|
|
8
8
|
})(TargetType || {});
|
|
9
9
|
var Target;
|
|
10
10
|
((Target2) => {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
class Expr {
|
|
12
|
+
constructor(expr, alias) {
|
|
13
|
+
this.expr = expr;
|
|
14
|
+
this.alias = alias;
|
|
15
|
+
}
|
|
16
|
+
type = "Target.Expr" /* Expr */;
|
|
13
17
|
}
|
|
14
18
|
Target2.Expr = Expr;
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
class Query {
|
|
20
|
+
constructor(query, alias) {
|
|
21
|
+
this.query = query;
|
|
22
|
+
this.alias = alias;
|
|
23
|
+
}
|
|
24
|
+
type = "Target.Query" /* Query */;
|
|
17
25
|
}
|
|
18
26
|
Target2.Query = Query;
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
class Table {
|
|
28
|
+
constructor(table) {
|
|
29
|
+
this.table = table;
|
|
30
|
+
}
|
|
31
|
+
type = "Target.Table" /* Table */;
|
|
21
32
|
}
|
|
22
33
|
Target2.Table = Table;
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
class Join {
|
|
35
|
+
constructor(left, right, joinType, on) {
|
|
36
|
+
this.left = left;
|
|
37
|
+
this.right = right;
|
|
38
|
+
this.joinType = joinType;
|
|
39
|
+
this.on = on;
|
|
40
|
+
}
|
|
41
|
+
type = "Target.Join" /* Join */;
|
|
25
42
|
}
|
|
26
43
|
Target2.Join = Join;
|
|
27
44
|
function source(from) {
|
|
28
45
|
switch (from.type) {
|
|
29
|
-
case "Table" /* Table */:
|
|
46
|
+
case "Target.Table" /* Table */:
|
|
30
47
|
return from.table;
|
|
31
|
-
case "Join" /* Join */:
|
|
48
|
+
case "Target.Join" /* Join */:
|
|
32
49
|
return source(from.left);
|
|
33
50
|
default:
|
|
34
51
|
return void 0;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/driver/bun-sqlite.ts
|
|
2
|
-
import {
|
|
3
|
-
import { Query } from "../define/Query.js";
|
|
2
|
+
import { Query, QueryData } from "../define/Query.js";
|
|
4
3
|
import { Driver } from "../lib/Driver.js";
|
|
5
4
|
import { SqlError } from "../lib/SqlError.js";
|
|
6
5
|
import { SqliteFormatter } from "../sqlite/SqliteFormatter.js";
|
|
@@ -35,8 +34,8 @@ var BunSqliteDriver = class extends Driver.Sync {
|
|
|
35
34
|
this.tableData = this.prepare(SqliteSchema.tableData);
|
|
36
35
|
this.indexData = this.prepare(SqliteSchema.indexData);
|
|
37
36
|
this.lastChanges = this.prepare(() => {
|
|
38
|
-
return new
|
|
39
|
-
|
|
37
|
+
return new Query.SelectSingle(
|
|
38
|
+
new QueryData.Raw({
|
|
40
39
|
expectedReturn: "row",
|
|
41
40
|
strings: ["SELECT changes() as rowsAffected"],
|
|
42
41
|
params: []
|
package/dist/driver/sqlite3.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Database } from 'sqlite3';
|
|
2
|
-
import {
|
|
2
|
+
import { QueryData } from '../define/Query';
|
|
3
3
|
import { SchemaInstructions } from '../define/Schema';
|
|
4
4
|
import { Driver } from '../lib/Driver';
|
|
5
5
|
import { Statement } from '../lib/Statement';
|
|
@@ -10,7 +10,7 @@ export declare class Sqlite3Driver extends Driver.Async {
|
|
|
10
10
|
tableData: (tableName: string) => Promise<Array<SqliteSchema.Column>>;
|
|
11
11
|
indexData: (tableName: string) => Promise<Array<SqliteSchema.Index>>;
|
|
12
12
|
constructor(db: Database);
|
|
13
|
-
executeQuery
|
|
13
|
+
executeQuery(query: QueryData, stmt?: Driver.Async.PreparedStatement, params?: any[] | undefined): Promise<unknown>;
|
|
14
14
|
prepareStatement(stmt: Statement): Driver.Async.PreparedStatement;
|
|
15
15
|
schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
|
|
16
16
|
isolate(): [connection: Driver.Async, release: () => Promise<void>];
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from './define/Column';
|
|
2
|
-
export * from './define/Cursor';
|
|
3
2
|
export * from './define/Expr';
|
|
4
3
|
export type { Fields } from './define/Fields';
|
|
5
4
|
export * from './define/Functions';
|
|
@@ -11,6 +10,7 @@ export * from './define/Param';
|
|
|
11
10
|
export * from './define/Query';
|
|
12
11
|
export * from './define/Schema';
|
|
13
12
|
export type { Selection } from './define/Selection';
|
|
13
|
+
export * from './define/Sql';
|
|
14
14
|
export * from './define/Table';
|
|
15
15
|
export * from './define/Target';
|
|
16
16
|
export type { Driver } from './lib/Driver';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
export * from "./define/Column.js";
|
|
3
|
-
export * from "./define/Cursor.js";
|
|
4
3
|
export * from "./define/Expr.js";
|
|
5
4
|
export * from "./define/Functions.js";
|
|
6
5
|
export * from "./define/Index.js";
|
|
@@ -9,6 +8,7 @@ export * from "./define/OrderBy.js";
|
|
|
9
8
|
export * from "./define/Param.js";
|
|
10
9
|
export * from "./define/Query.js";
|
|
11
10
|
export * from "./define/Schema.js";
|
|
11
|
+
export * from "./define/Sql.js";
|
|
12
12
|
export * from "./define/Table.js";
|
|
13
13
|
export * from "./define/Target.js";
|
|
14
14
|
export * from "./lib/SqlError.js";
|
package/dist/lib/Driver.d.ts
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import { Cursor } from '../define/Cursor';
|
|
2
1
|
import { Expr } from '../define/Expr';
|
|
3
|
-
import { Query } from '../define/Query';
|
|
2
|
+
import { Query, QueryData } from '../define/Query';
|
|
4
3
|
import { SchemaInstructions } from '../define/Schema';
|
|
5
4
|
import { Table } from '../define/Table';
|
|
5
|
+
import { Callable } from '../util/Callable';
|
|
6
6
|
import { Formatter } from './Formatter';
|
|
7
7
|
import { Statement } from './Statement';
|
|
8
|
-
declare abstract class DriverBase {
|
|
8
|
+
declare abstract class DriverBase extends Callable {
|
|
9
9
|
formatter: Formatter;
|
|
10
10
|
constructor(formatter: Formatter);
|
|
11
|
-
compile<T extends Array<Expr<any>>, R>(create: (...params: T) =>
|
|
11
|
+
compile<T extends Array<Expr<any>>, R>(create: (...params: T) => Query<R>): [QueryData, Statement];
|
|
12
12
|
all(...args: Array<any>): any;
|
|
13
13
|
get(...args: Array<any>): any;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
abstract executeQuery(query: Query<any>): any;
|
|
14
|
+
executeTemplate(expectedReturn: QueryData.RawReturn, strings: TemplateStringsArray, ...params: Array<any>): any;
|
|
15
|
+
abstract executeQuery(query: QueryData): any;
|
|
17
16
|
}
|
|
18
17
|
type ParamTypes<Params extends [...any[]]> = {
|
|
19
18
|
[K in keyof Params]: Params[K] extends Expr<infer T> ? T : never;
|
|
@@ -21,8 +20,8 @@ type ParamTypes<Params extends [...any[]]> = {
|
|
|
21
20
|
length: Params['length'];
|
|
22
21
|
};
|
|
23
22
|
interface SyncDriver {
|
|
24
|
-
<T>(query:
|
|
25
|
-
<T>(...queries: Array<
|
|
23
|
+
<T>(query: Query<T>): T;
|
|
24
|
+
<T>(...queries: Array<Query<any>>): T;
|
|
26
25
|
(strings: TemplateStringsArray, ...values: any[]): any;
|
|
27
26
|
}
|
|
28
27
|
declare abstract class SyncDriver extends DriverBase {
|
|
@@ -30,16 +29,16 @@ declare abstract class SyncDriver extends DriverBase {
|
|
|
30
29
|
constructor(formatter: Formatter);
|
|
31
30
|
abstract prepareStatement(stmt: Statement, discardAfter: boolean): SyncPreparedStatement;
|
|
32
31
|
abstract schemaInstructions(tableName: string): SchemaInstructions | undefined;
|
|
33
|
-
prepare<T extends Array<Expr<any>>, R>(create: (...params: T) =>
|
|
32
|
+
prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Query<R>): (...params: ParamTypes<T>) => R;
|
|
34
33
|
migrateSchema(...tables: Array<Table<any>>): unknown;
|
|
35
|
-
executeQuery
|
|
36
|
-
all<T>(cursor:
|
|
37
|
-
all<T>(cursor:
|
|
34
|
+
executeQuery(query: QueryData, stmt?: SyncPreparedStatement, params?: Array<any>): unknown;
|
|
35
|
+
all<T>(cursor: Query.SelectSingle<T>): Array<T>;
|
|
36
|
+
all<T>(cursor: Query<T>): T;
|
|
38
37
|
all<T>(strings: TemplateStringsArray, ...params: Array<any>): Array<T>;
|
|
39
|
-
get<T>(cursor:
|
|
40
|
-
get<T>(cursor:
|
|
38
|
+
get<T>(cursor: Query.SelectMultiple<T>): T | null;
|
|
39
|
+
get<T>(cursor: Query<T>): T;
|
|
41
40
|
get<T>(strings: TemplateStringsArray, ...params: Array<any>): T;
|
|
42
|
-
iterate<T>(cursor:
|
|
41
|
+
iterate<T>(cursor: Query.SelectMultiple<T>): Iterable<T>;
|
|
43
42
|
transaction<T>(run: (query: SyncDriver) => T): T;
|
|
44
43
|
toAsync(): SyncWrapper;
|
|
45
44
|
}
|
|
@@ -53,8 +52,8 @@ interface SyncPreparedStatement {
|
|
|
53
52
|
execute(params?: Array<any>): void;
|
|
54
53
|
}
|
|
55
54
|
interface AsyncDriver {
|
|
56
|
-
<T>(query:
|
|
57
|
-
<T>(...queries: Array<
|
|
55
|
+
<T>(query: Query<T>): Promise<T>;
|
|
56
|
+
<T>(...queries: Array<Query<any>>): Promise<T>;
|
|
58
57
|
(strings: TemplateStringsArray, ...values: any[]): Promise<any>;
|
|
59
58
|
}
|
|
60
59
|
declare abstract class AsyncDriver extends DriverBase {
|
|
@@ -63,23 +62,23 @@ declare abstract class AsyncDriver extends DriverBase {
|
|
|
63
62
|
abstract isolate(): [connection: AsyncDriver, release: () => Promise<void>];
|
|
64
63
|
abstract prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
|
|
65
64
|
abstract schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
|
|
66
|
-
prepare<T extends Array<Expr<any>>, R>(create: (...params: T) =>
|
|
65
|
+
prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Query<R>): (...params: ParamTypes<T>) => Promise<R>;
|
|
67
66
|
migrateSchema(...tables: Array<Table<any>>): Promise<unknown>;
|
|
68
|
-
executeQuery
|
|
69
|
-
all<T>(cursor:
|
|
70
|
-
all<T>(cursor:
|
|
67
|
+
executeQuery(query: QueryData, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<unknown>;
|
|
68
|
+
all<T>(cursor: Query.SelectSingle<T>): Promise<Array<T>>;
|
|
69
|
+
all<T>(cursor: Query<T>): Promise<T>;
|
|
71
70
|
all<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<Array<T>>;
|
|
72
|
-
get<T>(cursor:
|
|
73
|
-
get<T>(cursor:
|
|
71
|
+
get<T>(cursor: Query.SelectMultiple<T>): Promise<T | null>;
|
|
72
|
+
get<T>(cursor: Query<T>): Promise<T>;
|
|
74
73
|
get<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<T>;
|
|
75
|
-
iterate<T>(cursor:
|
|
74
|
+
iterate<T>(cursor: Query.SelectMultiple<T>): AsyncIterable<T>;
|
|
76
75
|
transaction<T>(run: (query: AsyncDriver) => T): Promise<T>;
|
|
77
76
|
}
|
|
78
77
|
declare class SyncWrapper extends AsyncDriver {
|
|
79
78
|
private sync;
|
|
80
79
|
lock: Promise<void> | undefined;
|
|
81
80
|
constructor(sync: SyncDriver);
|
|
82
|
-
executeQuery
|
|
81
|
+
executeQuery(query: QueryData, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<unknown>;
|
|
83
82
|
prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
|
|
84
83
|
schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
|
|
85
84
|
isolate(): [connection: AsyncDriver, release: () => Promise<void>];
|