rado 0.3.1 → 0.3.3
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/README.md +2 -0
- package/dist/define/Column.d.ts +14 -1
- package/dist/define/Column.js +25 -1
- package/dist/define/Expr.d.ts +2 -2
- package/dist/define/Expr.js +4 -1
- package/dist/define/Ops.d.ts +1 -6
- package/dist/define/Ops.js +10 -7
- package/dist/define/Query.d.ts +117 -2
- package/dist/define/Query.js +472 -17
- package/dist/define/Selection.d.ts +1 -1
- package/dist/define/Table.d.ts +1 -2
- package/dist/define/Table.js +1 -1
- package/dist/define/VirtualTable.d.ts +1 -1
- package/dist/driver/bun-sqlite.js +1 -2
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -8
- package/dist/lib/Driver.d.ts +1 -2
- package/dist/lib/Formatter.d.ts +1 -1
- package/dist/lib/Formatter.js +19 -4
- package/package.json +1 -1
- package/dist/define/query/Batch.d.ts +0 -7
- package/dist/define/query/Batch.js +0 -17
- package/dist/define/query/CreateTable.d.ts +0 -6
- package/dist/define/query/CreateTable.js +0 -11
- package/dist/define/query/Delete.d.ts +0 -13
- package/dist/define/query/Delete.js +0 -21
- package/dist/define/query/Insert.d.ts +0 -22
- package/dist/define/query/Insert.js +0 -47
- package/dist/define/query/Select.d.ts +0 -41
- package/dist/define/query/Select.js +0 -183
- package/dist/define/query/TableSelect.d.ts +0 -28
- package/dist/define/query/TableSelect.js +0 -79
- package/dist/define/query/Union.d.ts +0 -17
- package/dist/define/query/Union.js +0 -116
- package/dist/define/query/Update.d.ts +0 -12
- package/dist/define/query/Update.js +0 -18
package/README.md
CHANGED
package/dist/define/Column.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface PartialColumnData {
|
|
|
17
17
|
primaryKey?: boolean;
|
|
18
18
|
unique?: boolean;
|
|
19
19
|
references?: () => ExprData;
|
|
20
|
+
onUpdate?: Action;
|
|
21
|
+
onDelete?: Action;
|
|
20
22
|
enumerable?: boolean;
|
|
21
23
|
}
|
|
22
24
|
export interface ColumnData extends PartialColumnData {
|
|
@@ -46,9 +48,20 @@ export declare class ValueColumn<T> extends Callable implements Column<T> {
|
|
|
46
48
|
get unique(): ValueColumn<T>;
|
|
47
49
|
get autoIncrement(): OptionalColumn<T>;
|
|
48
50
|
primaryKey<K = string>(create?: () => EV<T>): PrimaryColumn<T, K>;
|
|
49
|
-
references<X extends T>(column: Expr<X> | (() => Expr<X>)):
|
|
51
|
+
references<X extends T>(column: Expr<X> | (() => Expr<X>)): ForeignKey<X>;
|
|
50
52
|
default(value: DefaultValue<T>): OptionalColumn<T>;
|
|
51
53
|
}
|
|
54
|
+
export declare enum Action {
|
|
55
|
+
NoAction = "no action",
|
|
56
|
+
Restrict = "restrict",
|
|
57
|
+
SetNull = "set null",
|
|
58
|
+
SetDefault = "set default",
|
|
59
|
+
Cascade = "cascade"
|
|
60
|
+
}
|
|
61
|
+
export declare class ForeignKey<T> extends ValueColumn<T> {
|
|
62
|
+
onUpdate(value: `${Action}`): ForeignKey<unknown>;
|
|
63
|
+
onDelete(value: `${Action}`): ForeignKey<unknown>;
|
|
64
|
+
}
|
|
52
65
|
export declare class OptionalColumn<T> extends ValueColumn<T> {
|
|
53
66
|
[Column.IsOptional]: true;
|
|
54
67
|
}
|
package/dist/define/Column.js
CHANGED
|
@@ -40,7 +40,7 @@ class ValueColumn extends Callable {
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
references(column2) {
|
|
43
|
-
return new
|
|
43
|
+
return new ForeignKey({
|
|
44
44
|
...this[Column.Data],
|
|
45
45
|
references() {
|
|
46
46
|
return ExprData.create(Expr.isExpr(column2) ? column2 : column2());
|
|
@@ -57,6 +57,28 @@ class ValueColumn extends Callable {
|
|
|
57
57
|
function createDefaultValue(value) {
|
|
58
58
|
return typeof value === "function" && !Expr.isExpr(value) ? () => ExprData.create(value()) : ExprData.create(value);
|
|
59
59
|
}
|
|
60
|
+
var Action = /* @__PURE__ */ ((Action2) => {
|
|
61
|
+
Action2["NoAction"] = "no action";
|
|
62
|
+
Action2["Restrict"] = "restrict";
|
|
63
|
+
Action2["SetNull"] = "set null";
|
|
64
|
+
Action2["SetDefault"] = "set default";
|
|
65
|
+
Action2["Cascade"] = "cascade";
|
|
66
|
+
return Action2;
|
|
67
|
+
})(Action || {});
|
|
68
|
+
class ForeignKey extends ValueColumn {
|
|
69
|
+
onUpdate(value) {
|
|
70
|
+
return new ForeignKey({
|
|
71
|
+
...this[Column.Data],
|
|
72
|
+
onUpdate: value
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
onDelete(value) {
|
|
76
|
+
return new ForeignKey({
|
|
77
|
+
...this[Column.Data],
|
|
78
|
+
onDelete: value
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
60
82
|
class OptionalColumn extends ValueColumn {
|
|
61
83
|
[Column.IsOptional];
|
|
62
84
|
}
|
|
@@ -147,8 +169,10 @@ class UnTyped extends Callable {
|
|
|
147
169
|
}
|
|
148
170
|
const column = new UnTyped();
|
|
149
171
|
export {
|
|
172
|
+
Action,
|
|
150
173
|
Column,
|
|
151
174
|
ColumnType,
|
|
175
|
+
ForeignKey,
|
|
152
176
|
ObjectColumn,
|
|
153
177
|
OptionalColumn,
|
|
154
178
|
OptionalObjectColumn,
|
package/dist/define/Expr.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Fields } from './Fields.js';
|
|
2
2
|
import { OrderBy } from './OrderBy.js';
|
|
3
3
|
import { ParamData } from './Param.js';
|
|
4
|
-
import { QueryData } from './Query.js';
|
|
4
|
+
import { QueryData, Select, SelectFirst } from './Query.js';
|
|
5
5
|
import { Selection } from './Selection.js';
|
|
6
6
|
import { Target } from './Target.js';
|
|
7
|
-
import { Select, SelectFirst } from './query/Select.js';
|
|
8
7
|
export declare enum UnOpType {
|
|
9
8
|
Not = "Not",
|
|
10
9
|
IsNull = "IsNull"
|
|
@@ -161,6 +160,7 @@ export declare class Expr<T> {
|
|
|
161
160
|
map<T, X extends Selection>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => X): Expr<Array<Selection.Infer<X>>>;
|
|
162
161
|
sure(): Expr<NonNullable<T>>;
|
|
163
162
|
get<T>(name: string): Expr<T>;
|
|
163
|
+
static [Symbol.hasInstance](instance: any): any;
|
|
164
164
|
}
|
|
165
165
|
export interface ObjectExpr {
|
|
166
166
|
[Expr.Data]: ExprData;
|
package/dist/define/Expr.js
CHANGED
|
@@ -386,6 +386,9 @@ class Expr {
|
|
|
386
386
|
get(name) {
|
|
387
387
|
return new Expr(new ExprData.Field(this[Expr.Data], name));
|
|
388
388
|
}
|
|
389
|
+
static [Symbol.hasInstance](instance) {
|
|
390
|
+
return instance?.[Expr.IsExpr];
|
|
391
|
+
}
|
|
389
392
|
}
|
|
390
393
|
((Expr2) => {
|
|
391
394
|
Expr2.Data = Symbol("Expr.Data");
|
|
@@ -419,7 +422,7 @@ class Expr {
|
|
|
419
422
|
}
|
|
420
423
|
Expr2.hasExpr = hasExpr;
|
|
421
424
|
function isExpr(input) {
|
|
422
|
-
return input
|
|
425
|
+
return input instanceof Expr2;
|
|
423
426
|
}
|
|
424
427
|
Expr2.isExpr = isExpr;
|
|
425
428
|
})(Expr || (Expr = {}));
|
package/dist/define/Ops.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
+
import { Batch, Delete, InsertInto, RecursiveUnion, Select, Update } from './Query.js';
|
|
1
2
|
import { Selection } from './Selection.js';
|
|
2
3
|
import { Table } from './Table.js';
|
|
3
|
-
import { Batch } from './query/Batch.js';
|
|
4
|
-
import { Delete } from './query/Delete.js';
|
|
5
|
-
import { InsertInto } from './query/Insert.js';
|
|
6
|
-
import { Select } from './query/Select.js';
|
|
7
|
-
import { RecursiveUnion } from './query/Union.js';
|
|
8
|
-
import { Update } from './query/Update.js';
|
|
9
4
|
export declare function withRecursive<Row>(initialSelect: Select<Row>): RecursiveUnion<Row>;
|
|
10
5
|
export declare function alias<T extends Table<{}>>(table: T): Record<string, T>;
|
|
11
6
|
export declare function select<X extends Selection>(selection: X): Select<Selection.Infer<X>>;
|
package/dist/define/Ops.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { ExprData } from "./Expr.js";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Batch,
|
|
4
|
+
Delete,
|
|
5
|
+
InsertInto,
|
|
6
|
+
Query,
|
|
7
|
+
QueryData,
|
|
8
|
+
RecursiveUnion,
|
|
9
|
+
Select,
|
|
10
|
+
Update
|
|
11
|
+
} from "./Query.js";
|
|
3
12
|
import { Schema } from "./Schema.js";
|
|
4
13
|
import { Table, createTable } from "./Table.js";
|
|
5
14
|
import { Target } from "./Target.js";
|
|
6
|
-
import { Batch } from "./query/Batch.js";
|
|
7
|
-
import { Delete } from "./query/Delete.js";
|
|
8
|
-
import { InsertInto } from "./query/Insert.js";
|
|
9
|
-
import { Select } from "./query/Select.js";
|
|
10
|
-
import { RecursiveUnion } from "./query/Union.js";
|
|
11
|
-
import { Update } from "./query/Update.js";
|
|
12
15
|
function withRecursive(initialSelect) {
|
|
13
16
|
return new RecursiveUnion(initialSelect[Query.Data]);
|
|
14
17
|
}
|
package/dist/define/Query.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Driver } from '../lib/Driver.js';
|
|
2
2
|
import { CompileOptions } from '../lib/Formatter.js';
|
|
3
3
|
import { ColumnData } from './Column.js';
|
|
4
|
-
import { EV, ExprData } from './Expr.js';
|
|
4
|
+
import { EV, Expr, ExprData } from './Expr.js';
|
|
5
5
|
import { IndexData } from './Index.js';
|
|
6
6
|
import { OrderBy } from './OrderBy.js';
|
|
7
7
|
import { Selection } from './Selection.js';
|
|
8
|
-
import { TableData } from './Table.js';
|
|
8
|
+
import { Table, TableData } from './Table.js';
|
|
9
9
|
import { Target } from './Target.js';
|
|
10
|
+
import { VirtualTable } from './VirtualTable.js';
|
|
10
11
|
export declare enum QueryType {
|
|
11
12
|
Insert = "QueryData.Insert",
|
|
12
13
|
Select = "QueryData.Select",
|
|
@@ -151,3 +152,117 @@ export declare namespace Query {
|
|
|
151
152
|
const Data: unique symbol;
|
|
152
153
|
function isQuery<T>(input: any): input is Query<T>;
|
|
153
154
|
}
|
|
155
|
+
export declare class Batch<T = void> extends Query<T> {
|
|
156
|
+
protected queries: Array<QueryData>;
|
|
157
|
+
[Query.Data]: QueryData.Batch;
|
|
158
|
+
constructor(queries: Array<QueryData>);
|
|
159
|
+
next<T>(cursor: Query<T>): Query<T>;
|
|
160
|
+
}
|
|
161
|
+
export declare class CreateTable extends Query<void> {
|
|
162
|
+
protected table: TableData;
|
|
163
|
+
constructor(table: TableData);
|
|
164
|
+
}
|
|
165
|
+
export declare class Delete extends Query<{
|
|
166
|
+
rowsAffected: number;
|
|
167
|
+
}> {
|
|
168
|
+
[Query.Data]: QueryData.Delete;
|
|
169
|
+
constructor(query: QueryData.Delete);
|
|
170
|
+
where(...where: Array<EV<boolean>>): Delete;
|
|
171
|
+
orderBy(...orderBy: Array<OrderBy>): Delete;
|
|
172
|
+
take(limit: number | undefined): Delete;
|
|
173
|
+
skip(offset: number | undefined): Delete;
|
|
174
|
+
}
|
|
175
|
+
export declare class Insert<T = {
|
|
176
|
+
rowsAffected: number;
|
|
177
|
+
}> extends Query<T> {
|
|
178
|
+
[Query.Data]: QueryData.Insert;
|
|
179
|
+
constructor(query: QueryData.Insert);
|
|
180
|
+
returning<X extends Selection>(selection: X): Insert<Array<Selection.Infer<X>>>;
|
|
181
|
+
}
|
|
182
|
+
export declare class InsertOne<T> extends Query<T> {
|
|
183
|
+
[Query.Data]: QueryData.Insert;
|
|
184
|
+
constructor(query: QueryData.Insert);
|
|
185
|
+
returning<X extends Selection>(selection: X): Insert<Selection.Infer<X>>;
|
|
186
|
+
}
|
|
187
|
+
export declare class InsertInto<Definition> {
|
|
188
|
+
protected into: TableData;
|
|
189
|
+
constructor(into: TableData);
|
|
190
|
+
selection(query: Select<Table.Select<Definition>>): Insert;
|
|
191
|
+
values(...data: Array<Table.Insert<Definition>>): Insert;
|
|
192
|
+
}
|
|
193
|
+
export declare class RecursiveUnion<Row> {
|
|
194
|
+
initialSelect: QueryData.Select;
|
|
195
|
+
constructor(initialSelect: QueryData.Select);
|
|
196
|
+
union(create: () => Select<Row> | Union<Row>): VirtualTable.Of<Row>;
|
|
197
|
+
unionAll(create: () => Select<Row> | Union<Row>): VirtualTable.Of<Row>;
|
|
198
|
+
}
|
|
199
|
+
export declare class Union<Row> extends Query<Array<Row>> {
|
|
200
|
+
[Query.Data]: QueryData.Union | QueryData.Select;
|
|
201
|
+
constructor(query: QueryData.Union | QueryData.Select);
|
|
202
|
+
union(query: Select<Row> | Union<Row>): Union<Row>;
|
|
203
|
+
unionAll(query: Select<Row> | Union<Row>): Union<Row>;
|
|
204
|
+
except(query: Select<Row> | Union<Row>): Union<Row>;
|
|
205
|
+
intersect(query: Select<Row> | Union<Row>): Union<Row>;
|
|
206
|
+
}
|
|
207
|
+
export declare class Select<Row> extends Union<Row> {
|
|
208
|
+
[Query.Data]: QueryData.Select;
|
|
209
|
+
constructor(query: QueryData.Select);
|
|
210
|
+
from(table: Table<any> | VirtualTable<any>): Select<Row>;
|
|
211
|
+
indexedBy(index: IndexData): Select<unknown>;
|
|
212
|
+
leftJoin<C>(that: Table<C> | Select<C>, ...on: Array<EV<boolean>>): Select<Row>;
|
|
213
|
+
innerJoin<C>(that: Table<C> | Select<C>, ...on: Array<EV<boolean>>): Select<Row>;
|
|
214
|
+
select<X extends Selection>(selection: X): Select<Selection.Infer<X>>;
|
|
215
|
+
count(): SelectFirst<number>;
|
|
216
|
+
orderBy(...orderBy: Array<Expr<any> | OrderBy>): Select<Row>;
|
|
217
|
+
groupBy(...groupBy: Array<Expr<any>>): Select<Row>;
|
|
218
|
+
maybeFirst(): SelectFirst<Row | null>;
|
|
219
|
+
first(): SelectFirst<Row>;
|
|
220
|
+
where(...where: Array<EV<boolean>>): Select<Row>;
|
|
221
|
+
take(limit: number | undefined): Select<Row>;
|
|
222
|
+
skip(offset: number | undefined): Select<Row>;
|
|
223
|
+
[Expr.ToExpr](): Expr<Row>;
|
|
224
|
+
}
|
|
225
|
+
export declare class SelectFirst<Row> extends Query<Row> {
|
|
226
|
+
[Query.Data]: QueryData.Select;
|
|
227
|
+
constructor(query: QueryData.Select);
|
|
228
|
+
from(table: Table<any>): Select<Row>;
|
|
229
|
+
leftJoin<C>(that: Table<C> | Select<C>, ...on: Array<EV<boolean>>): SelectFirst<Row>;
|
|
230
|
+
innerJoin<C>(that: Table<C> | Select<C>, ...on: Array<EV<boolean>>): SelectFirst<Row>;
|
|
231
|
+
select<X extends Selection>(selection: X): SelectFirst<Selection.Infer<X>>;
|
|
232
|
+
orderBy(...orderBy: Array<OrderBy>): SelectFirst<Row>;
|
|
233
|
+
groupBy(...groupBy: Array<Expr<any>>): SelectFirst<Row>;
|
|
234
|
+
where(...where: Array<EV<boolean>>): SelectFirst<Row>;
|
|
235
|
+
take(limit: number | undefined): SelectFirst<Row>;
|
|
236
|
+
skip(offset: number | undefined): SelectFirst<Row>;
|
|
237
|
+
all(): Select<Row>;
|
|
238
|
+
[Expr.ToExpr](): Expr<Row>;
|
|
239
|
+
}
|
|
240
|
+
export declare class TableSelect<Definition> extends Select<Table.Select<Definition>> {
|
|
241
|
+
protected table: TableData;
|
|
242
|
+
[Query.Data]: QueryData.Select;
|
|
243
|
+
constructor(table: TableData, conditions?: Array<EV<boolean>>);
|
|
244
|
+
as(alias: string): Table<Definition>;
|
|
245
|
+
create(): CreateTable;
|
|
246
|
+
insert(query: Select<Table.Insert<Definition>>): Insert;
|
|
247
|
+
insert(rows: Array<Table.Insert<Definition>>): Insert;
|
|
248
|
+
insert(row: Table.Insert<Definition>): InsertOne<Table.Select<Definition>>;
|
|
249
|
+
insertSelect(query: Select<Table.Insert<Definition>>): Insert<{
|
|
250
|
+
rowsAffected: number;
|
|
251
|
+
}>;
|
|
252
|
+
insertOne(record: Table.Insert<Definition>): InsertOne<{ [K in keyof Definition as Definition[K] extends import("./Column.js").Column<any> ? K : never]: Definition[K] extends import("./Column.js").Column<infer T> ? T : never; }>;
|
|
253
|
+
insertAll(data: Array<Table.Insert<Definition>>): Insert<{
|
|
254
|
+
rowsAffected: number;
|
|
255
|
+
}>;
|
|
256
|
+
set(data: Table.Update<Definition>): Update<Definition>;
|
|
257
|
+
delete(): Delete;
|
|
258
|
+
get(name: string): Expr<any>;
|
|
259
|
+
}
|
|
260
|
+
export declare class Update<Definition> extends Query<{
|
|
261
|
+
rowsAffected: number;
|
|
262
|
+
}> {
|
|
263
|
+
[Query.Data]: QueryData.Update;
|
|
264
|
+
set(set: Table.Update<Definition>): Update<Definition>;
|
|
265
|
+
where(...where: Array<EV<boolean>>): Update<Definition>;
|
|
266
|
+
take(limit: number | undefined): Update<Definition>;
|
|
267
|
+
skip(offset: number | undefined): Update<Definition>;
|
|
268
|
+
}
|