rado 0.1.23 → 0.1.25

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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/driver/better-sqlite3.d.ts +15 -17
  3. package/dist/driver/better-sqlite3.js +25 -18
  4. package/dist/driver/sql.js.d.ts +15 -17
  5. package/dist/driver/sql.js.js +29 -26
  6. package/dist/driver/sqlite3.d.ts +18 -20
  7. package/dist/driver/sqlite3.js +40 -29
  8. package/dist/index.d.ts +20 -20
  9. package/dist/lib/Column.d.ts +57 -57
  10. package/dist/lib/Cursor.d.ts +78 -77
  11. package/dist/lib/Cursor.js +3 -0
  12. package/dist/lib/Driver.d.ts +105 -89
  13. package/dist/lib/Driver.js +72 -28
  14. package/dist/lib/Expr.d.ts +154 -154
  15. package/dist/lib/Fields.d.ts +13 -13
  16. package/dist/lib/Formatter.d.ts +56 -56
  17. package/dist/lib/Formatter.js +14 -4
  18. package/dist/lib/Functions.d.ts +7 -7
  19. package/dist/lib/Id.d.ts +3 -3
  20. package/dist/lib/Index.d.ts +17 -17
  21. package/dist/lib/Index.js +3 -3
  22. package/dist/lib/Ops.d.ts +8 -8
  23. package/dist/lib/OrderBy.d.ts +9 -9
  24. package/dist/lib/Param.d.ts +20 -15
  25. package/dist/lib/Param.js +10 -1
  26. package/dist/lib/Query.d.ts +108 -108
  27. package/dist/lib/Sanitizer.d.ts +4 -4
  28. package/dist/lib/Schema.d.ts +18 -18
  29. package/dist/lib/Schema.js +4 -4
  30. package/dist/lib/Selection.d.ts +20 -20
  31. package/dist/lib/Statement.d.ts +71 -61
  32. package/dist/lib/Statement.js +46 -5
  33. package/dist/lib/Table.d.ts +59 -58
  34. package/dist/lib/Table.js +4 -7
  35. package/dist/lib/Target.d.ts +30 -30
  36. package/dist/lib/Update.d.ts +4 -4
  37. package/dist/sqlite/SqliteFormatter.d.ts +11 -11
  38. package/dist/sqlite/SqliteFunctions.d.ts +156 -156
  39. package/dist/sqlite/SqliteSchema.d.ts +25 -24
  40. package/dist/sqlite/SqliteSchema.js +5 -4
  41. package/dist/sqlite.d.ts +2 -2
  42. package/package.json +47 -47
  43. package/dist/Column.d.ts +0 -41
  44. package/dist/Column.js +0 -58
  45. package/dist/Cursor.d.ts +0 -77
  46. package/dist/Cursor.js +0 -211
  47. package/dist/Driver.d.ts +0 -72
  48. package/dist/Driver.js +0 -145
  49. package/dist/Expr.d.ts +0 -149
  50. package/dist/Expr.js +0 -284
  51. package/dist/Fields.d.ts +0 -9
  52. package/dist/Fields.js +0 -0
  53. package/dist/Formatter.d.ts +0 -50
  54. package/dist/Formatter.js +0 -453
  55. package/dist/Functions.d.ts +0 -8
  56. package/dist/Functions.js +0 -11
  57. package/dist/Key.d.ts +0 -5
  58. package/dist/Ops.d.ts +0 -8
  59. package/dist/Ops.js +0 -46
  60. package/dist/OrderBy.d.ts +0 -9
  61. package/dist/OrderBy.js +0 -9
  62. package/dist/Param.d.ts +0 -15
  63. package/dist/Param.js +0 -18
  64. package/dist/Query.d.ts +0 -94
  65. package/dist/Query.js +0 -57
  66. package/dist/Sanitizer.d.ts +0 -4
  67. package/dist/Sanitizer.js +0 -0
  68. package/dist/Schema.d.ts +0 -10
  69. package/dist/Selection.d.ts +0 -18
  70. package/dist/Selection.js +0 -0
  71. package/dist/Statement.d.ts +0 -57
  72. package/dist/Statement.js +0 -184
  73. package/dist/Table.d.ts +0 -47
  74. package/dist/Table.js +0 -82
  75. package/dist/Target.d.ts +0 -30
  76. package/dist/Target.js +0 -37
  77. package/dist/Update.d.ts +0 -4
  78. package/dist/Update.js +0 -0
  79. package/dist/sqlite/index.d.ts +0 -2
  80. package/dist/sqlite/index.js +0 -3
@@ -1,154 +1,154 @@
1
- import { Cursor } from './Cursor';
2
- import { Fields } from './Fields';
3
- import { OrderBy } from './OrderBy';
4
- import { ParamData } from './Param';
5
- import { Query } from './Query';
6
- import { Selection } from './Selection';
7
- import { Target } from './Target';
8
- export declare enum UnOp {
9
- Not = "Not",
10
- IsNull = "IsNull"
11
- }
12
- export declare enum BinOp {
13
- Add = "Add",
14
- Subt = "Subt",
15
- Mult = "Mult",
16
- Mod = "Mod",
17
- Div = "Div",
18
- Greater = "Greater",
19
- GreaterOrEqual = "GreaterOrEqual",
20
- Less = "Less",
21
- LessOrEqual = "LessOrEqual",
22
- Equals = "Equals",
23
- NotEquals = "NotEquals",
24
- And = "And",
25
- Or = "Or",
26
- Like = "Like",
27
- Glob = "Glob",
28
- Match = "Match",
29
- In = "In",
30
- NotIn = "NotIn",
31
- Concat = "Concat"
32
- }
33
- export declare enum ExprType {
34
- UnOp = "UnOp",
35
- BinOp = "BinOp",
36
- Field = "Field",
37
- Param = "Param",
38
- Call = "Call",
39
- Query = "Query",
40
- Record = "Record",
41
- Row = "Row",
42
- Map = "Map",
43
- Filter = "Filter",
44
- Merge = "Merge",
45
- Case = "Case"
46
- }
47
- export type ExprData = {
48
- type: ExprType.UnOp;
49
- op: UnOp;
50
- expr: ExprData;
51
- } | {
52
- type: ExprType.BinOp;
53
- op: BinOp;
54
- a: ExprData;
55
- b: ExprData;
56
- } | {
57
- type: ExprType.Field;
58
- expr: ExprData;
59
- field: string;
60
- } | {
61
- type: ExprType.Param;
62
- param: ParamData;
63
- } | {
64
- type: ExprType.Call;
65
- method: string;
66
- params: Array<ExprData>;
67
- } | {
68
- type: ExprType.Query;
69
- query: Query.Select;
70
- } | {
71
- type: ExprType.Record;
72
- fields: Record<string, ExprData>;
73
- } | {
74
- type: ExprType.Merge;
75
- a: ExprData;
76
- b: ExprData;
77
- } | {
78
- type: ExprType.Row;
79
- target: Target;
80
- } | {
81
- type: ExprType.Map;
82
- target: Target;
83
- result: ExprData;
84
- } | {
85
- type: ExprType.Filter;
86
- target: Target;
87
- condition: ExprData;
88
- } | {
89
- type: ExprType.Case;
90
- expr: ExprData;
91
- cases: Record<string, ExprData>;
92
- defaultCase?: ExprData;
93
- };
94
- export declare const ExprData: {
95
- UnOp(op: UnOp, expr: ExprData): ExprData;
96
- BinOp(op: BinOp, a: ExprData, b: ExprData): ExprData;
97
- Field(expr: ExprData, field: string): ExprData;
98
- Param(param: ParamData): ExprData;
99
- Call(method: string, params: Array<ExprData>): ExprData;
100
- Query(query: Query.Select): ExprData;
101
- Record(fields: Record<string, ExprData>): ExprData;
102
- Merge(a: ExprData, b: ExprData): ExprData;
103
- Row(target: Target): ExprData;
104
- Map(target: Target, result: ExprData): ExprData;
105
- Filter(target: Target, condition: ExprData): ExprData;
106
- Case(expr: ExprData, cases: Record<string, ExprData>, defaultCase?: ExprData): ExprData;
107
- create(input: any): ExprData;
108
- };
109
- /** Expression or value of type T */
110
- export type EV<T> = Expr<T> | T;
111
- export declare class Expr<T> {
112
- expr: ExprData;
113
- static NULL: ExprData;
114
- static value<T>(value: T): Expr<T>;
115
- static create<T>(input: EV<T>): Expr<T>;
116
- static and(...conditions: Array<EV<boolean>>): Expr<boolean>;
117
- static or(...conditions: Array<EV<boolean>>): Expr<boolean>;
118
- constructor(expr: ExprData);
119
- asc(): OrderBy;
120
- desc(): OrderBy;
121
- not(): Expr<boolean>;
122
- or(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
123
- and(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
124
- isNull(): Expr<boolean>;
125
- isNotNull(): Expr<boolean>;
126
- isNot(that: EV<T>): Expr<boolean>;
127
- is(that: EV<T> | Cursor.SelectSingle<T>): Expr<boolean>;
128
- isIn(that: EV<Array<T>> | Cursor<T>): Expr<boolean>;
129
- isNotIn(that: EV<Array<T>> | Cursor<T>): Expr<boolean>;
130
- add(this: Expr<number>, that: EV<number>): Expr<number>;
131
- substract(this: Expr<number>, that: EV<number>): Expr<number>;
132
- multiply(this: Expr<number>, that: EV<number>): Expr<number>;
133
- remainder(this: Expr<number>, that: EV<number>): Expr<number>;
134
- divide(this: Expr<number>, that: EV<number>): Expr<number>;
135
- greater(that: EV<any>): Expr<boolean>;
136
- greaterOrEqual(that: EV<any>): Expr<boolean>;
137
- less(that: EV<any>): Expr<boolean>;
138
- lessOrEqual(that: EV<any>): Expr<boolean>;
139
- concat(this: Expr<string>, that: EV<string>): Expr<string>;
140
- like(this: Expr<string>, that: EV<string>): Expr<boolean>;
141
- glob(this: Expr<string>, that: EV<string>): Expr<boolean>;
142
- match(this: Expr<string>, that: EV<string>): Expr<boolean>;
143
- with<X extends Selection>(that: X): Selection.With<T, X>;
144
- at<T>(this: Expr<Array<T>>, index: number): Expr<T | null>;
145
- filter<T>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => Expr<boolean>): Expr<Array<T>>;
146
- map<T, X extends Selection>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => X): Expr<Array<Selection.Infer<X>>>;
147
- sure(): Expr<NonNullable<T>>;
148
- get<T>(name: string): Expr<T>;
149
- }
150
- export declare namespace Expr {
151
- type Record<T> = Expr<T> & {
152
- [K in keyof T]: Expr<T[K]>;
153
- };
154
- }
1
+ import { Cursor } from './Cursor';
2
+ import { Fields } from './Fields';
3
+ import { OrderBy } from './OrderBy';
4
+ import { ParamData } from './Param';
5
+ import { Query } from './Query';
6
+ import { Selection } from './Selection';
7
+ import { Target } from './Target';
8
+ export declare enum UnOp {
9
+ Not = "Not",
10
+ IsNull = "IsNull"
11
+ }
12
+ export declare enum BinOp {
13
+ Add = "Add",
14
+ Subt = "Subt",
15
+ Mult = "Mult",
16
+ Mod = "Mod",
17
+ Div = "Div",
18
+ Greater = "Greater",
19
+ GreaterOrEqual = "GreaterOrEqual",
20
+ Less = "Less",
21
+ LessOrEqual = "LessOrEqual",
22
+ Equals = "Equals",
23
+ NotEquals = "NotEquals",
24
+ And = "And",
25
+ Or = "Or",
26
+ Like = "Like",
27
+ Glob = "Glob",
28
+ Match = "Match",
29
+ In = "In",
30
+ NotIn = "NotIn",
31
+ Concat = "Concat"
32
+ }
33
+ export declare enum ExprType {
34
+ UnOp = "UnOp",
35
+ BinOp = "BinOp",
36
+ Field = "Field",
37
+ Param = "Param",
38
+ Call = "Call",
39
+ Query = "Query",
40
+ Record = "Record",
41
+ Row = "Row",
42
+ Map = "Map",
43
+ Filter = "Filter",
44
+ Merge = "Merge",
45
+ Case = "Case"
46
+ }
47
+ export type ExprData = {
48
+ type: ExprType.UnOp;
49
+ op: UnOp;
50
+ expr: ExprData;
51
+ } | {
52
+ type: ExprType.BinOp;
53
+ op: BinOp;
54
+ a: ExprData;
55
+ b: ExprData;
56
+ } | {
57
+ type: ExprType.Field;
58
+ expr: ExprData;
59
+ field: string;
60
+ } | {
61
+ type: ExprType.Param;
62
+ param: ParamData;
63
+ } | {
64
+ type: ExprType.Call;
65
+ method: string;
66
+ params: Array<ExprData>;
67
+ } | {
68
+ type: ExprType.Query;
69
+ query: Query.Select;
70
+ } | {
71
+ type: ExprType.Record;
72
+ fields: Record<string, ExprData>;
73
+ } | {
74
+ type: ExprType.Merge;
75
+ a: ExprData;
76
+ b: ExprData;
77
+ } | {
78
+ type: ExprType.Row;
79
+ target: Target;
80
+ } | {
81
+ type: ExprType.Map;
82
+ target: Target;
83
+ result: ExprData;
84
+ } | {
85
+ type: ExprType.Filter;
86
+ target: Target;
87
+ condition: ExprData;
88
+ } | {
89
+ type: ExprType.Case;
90
+ expr: ExprData;
91
+ cases: Record<string, ExprData>;
92
+ defaultCase?: ExprData;
93
+ };
94
+ export declare const ExprData: {
95
+ UnOp(op: UnOp, expr: ExprData): ExprData;
96
+ BinOp(op: BinOp, a: ExprData, b: ExprData): ExprData;
97
+ Field(expr: ExprData, field: string): ExprData;
98
+ Param(param: ParamData): ExprData;
99
+ Call(method: string, params: Array<ExprData>): ExprData;
100
+ Query(query: Query.Select): ExprData;
101
+ Record(fields: Record<string, ExprData>): ExprData;
102
+ Merge(a: ExprData, b: ExprData): ExprData;
103
+ Row(target: Target): ExprData;
104
+ Map(target: Target, result: ExprData): ExprData;
105
+ Filter(target: Target, condition: ExprData): ExprData;
106
+ Case(expr: ExprData, cases: Record<string, ExprData>, defaultCase?: ExprData): ExprData;
107
+ create(input: any): ExprData;
108
+ };
109
+ /** Expression or value of type T */
110
+ export type EV<T> = Expr<T> | T;
111
+ export declare class Expr<T> {
112
+ expr: ExprData;
113
+ static NULL: ExprData;
114
+ static value<T>(value: T): Expr<T>;
115
+ static create<T>(input: EV<T>): Expr<T>;
116
+ static and(...conditions: Array<EV<boolean>>): Expr<boolean>;
117
+ static or(...conditions: Array<EV<boolean>>): Expr<boolean>;
118
+ constructor(expr: ExprData);
119
+ asc(): OrderBy;
120
+ desc(): OrderBy;
121
+ not(): Expr<boolean>;
122
+ or(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
123
+ and(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
124
+ isNull(): Expr<boolean>;
125
+ isNotNull(): Expr<boolean>;
126
+ isNot(that: EV<T>): Expr<boolean>;
127
+ is(that: EV<T> | Cursor.SelectSingle<T>): Expr<boolean>;
128
+ isIn(that: EV<Array<T>> | Cursor<T>): Expr<boolean>;
129
+ isNotIn(that: EV<Array<T>> | Cursor<T>): Expr<boolean>;
130
+ add(this: Expr<number>, that: EV<number>): Expr<number>;
131
+ substract(this: Expr<number>, that: EV<number>): Expr<number>;
132
+ multiply(this: Expr<number>, that: EV<number>): Expr<number>;
133
+ remainder(this: Expr<number>, that: EV<number>): Expr<number>;
134
+ divide(this: Expr<number>, that: EV<number>): Expr<number>;
135
+ greater(that: EV<any>): Expr<boolean>;
136
+ greaterOrEqual(that: EV<any>): Expr<boolean>;
137
+ less(that: EV<any>): Expr<boolean>;
138
+ lessOrEqual(that: EV<any>): Expr<boolean>;
139
+ concat(this: Expr<string>, that: EV<string>): Expr<string>;
140
+ like(this: Expr<string>, that: EV<string>): Expr<boolean>;
141
+ glob(this: Expr<string>, that: EV<string>): Expr<boolean>;
142
+ match(this: Expr<string>, that: EV<string>): Expr<boolean>;
143
+ with<X extends Selection>(that: X): Selection.With<T, X>;
144
+ at<T>(this: Expr<Array<T>>, index: number): Expr<T | null>;
145
+ filter<T>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => Expr<boolean>): Expr<Array<T>>;
146
+ map<T, X extends Selection>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => X): Expr<Array<Selection.Infer<X>>>;
147
+ sure(): Expr<NonNullable<T>>;
148
+ get<T>(name: string): Expr<T>;
149
+ }
150
+ export declare namespace Expr {
151
+ type Record<T> = Expr<T> & {
152
+ [K in keyof T]: Expr<T[K]>;
153
+ };
154
+ }
@@ -1,13 +1,13 @@
1
- import { Column, PrimaryKey } from './Column';
2
- import { Expr } from './Expr';
3
- type ObjectUnion<T> = {
4
- [K in T extends infer P ? keyof P : never]: T extends infer P ? K extends keyof P ? P[K] : never : never;
5
- };
6
- type RecordField<T> = Expr<T> & FieldsOf<ObjectUnion<T>>;
7
- type Field<T> = [T] extends [Array<any>] ? Expr<T> : [T] extends [Column.IsPrimary<infer V, infer K>] ? Expr<PrimaryKey<V, K>> : [T] extends [Column.IsOptional<infer V>] ? Field<V> : [T] extends [number | string | boolean] ? Expr<T> : [T] extends [Record<string, any> | null] ? RecordField<T> : Expr<T>;
8
- type FieldsOf<Row> = Row extends Record<string, any> ? {
9
- [K in keyof Row]-?: Field<Row[K]>;
10
- } : never;
11
- type IsStrictlyAny<T> = (T extends never ? true : false) extends false ? false : true;
12
- export type Fields<T> = IsStrictlyAny<T> extends true ? any : T extends object ? FieldsOf<T> : Field<T>;
13
- export {};
1
+ import { Column, PrimaryKey } from './Column';
2
+ import { Expr } from './Expr';
3
+ type ObjectUnion<T> = {
4
+ [K in T extends infer P ? keyof P : never]: T extends infer P ? K extends keyof P ? P[K] : never : never;
5
+ };
6
+ type RecordField<T> = Expr<T> & FieldsOf<ObjectUnion<T>>;
7
+ type Field<T> = [T] extends [Array<any>] ? Expr<T> : [T] extends [Column.IsPrimary<infer V, infer K>] ? Expr<PrimaryKey<V, K>> : [T] extends [Column.IsOptional<infer V>] ? Field<V> : [T] extends [number | string | boolean] ? Expr<T> : [T] extends [Record<string, any> | null] ? RecordField<T> : Expr<T>;
8
+ type FieldsOf<Row> = Row extends Record<string, any> ? {
9
+ [K in keyof Row]-?: Field<Row[K]>;
10
+ } : never;
11
+ type IsStrictlyAny<T> = (T extends never ? true : false) extends false ? false : true;
12
+ export type Fields<T> = IsStrictlyAny<T> extends true ? any : T extends object ? FieldsOf<T> : Field<T>;
13
+ export {};
@@ -1,56 +1,56 @@
1
- import { ColumnData, ColumnType } from './Column';
2
- import { ExprData } from './Expr';
3
- import { OrderBy } from './OrderBy';
4
- import { Query } from './Query';
5
- import { Sanitizer } from './Sanitizer';
6
- import { Statement } from './Statement';
7
- import { Target } from './Target';
8
- export interface FormatContext {
9
- nameResult?: string;
10
- skipTableName?: boolean;
11
- forceInline?: boolean;
12
- formatAsJson?: boolean;
13
- formatSubject?: (subject: Statement) => Statement;
14
- }
15
- export declare abstract class Formatter implements Sanitizer {
16
- constructor();
17
- abstract escapeValue(value: any): string;
18
- abstract escapeIdentifier(ident: string): string;
19
- abstract formatSqlAccess(on: Statement, field: string): Statement;
20
- abstract formatJsonAccess(on: Statement, field: string): Statement;
21
- formatAccess(on: Statement, field: string, formatAsJson?: boolean): Statement;
22
- compile<T>(query: Query<T>, formatInline?: boolean): Statement.Compiled;
23
- format<T>(query: Query<T>, ctx?: FormatContext): Statement;
24
- formatSelect(query: Query.Select, ctx: FormatContext): Statement;
25
- formatInsert(query: Query.Insert, ctx: FormatContext): Statement;
26
- formatUpdate(query: Query.Update, ctx: FormatContext): Statement;
27
- formatDelete(query: Query.Delete, ctx: FormatContext): Statement;
28
- formatCreateTable(query: Query.CreateTable, ctx: FormatContext): Statement;
29
- formatCreateIndex(query: Query.CreateIndex, ctx?: FormatContext): Statement;
30
- formatDropIndex(query: Query.DropIndex, ctx: FormatContext): Statement;
31
- formatAlterTable(query: Query.AlterTable, ctx: FormatContext): Statement;
32
- formatTransaction({ op, id }: Query.Transaction, ctx: FormatContext): Statement;
33
- formatBatch(queries: Query[], ctx: FormatContext): Statement;
34
- formatRaw({ strings, params }: Query.Raw, ctx: FormatContext): Statement;
35
- formatColumn(column: ColumnData): Statement;
36
- formatContraintReference(reference: ExprData): Statement;
37
- formatType(type: ColumnType): Statement;
38
- formatInsertRow(columns: Record<string, ColumnData>, row: Record<string, any>): Statement;
39
- formatColumnValue(column: ColumnData, columnValue: any): Statement;
40
- formatTarget(target: Target, ctx: FormatContext): Statement;
41
- formatWhere(expr: ExprData | undefined, ctx: FormatContext): Statement | undefined;
42
- formatHaving(expr: ExprData | undefined, ctx: FormatContext): Statement | undefined;
43
- formatGroupBy(groupBy: Array<ExprData> | undefined, ctx: FormatContext): Statement | undefined;
44
- formatOrderBy(orderBy: Array<OrderBy> | undefined, ctx: FormatContext): Statement | undefined;
45
- formatLimit({ limit, offset, singleResult }: Query.QueryBase, ctx: FormatContext): Statement | undefined;
46
- formatSelection(selection: ExprData, ctx: FormatContext): Statement;
47
- formatExprValue(expr: ExprData, ctx: FormatContext): Statement;
48
- formatIn(expr: ExprData, ctx: FormatContext): Statement;
49
- formatUnwrapArray(stmt: Statement): Statement;
50
- retrieveField(expr: ExprData, field: string): ExprData | undefined;
51
- formatField(expr: ExprData, field: string, ctx: FormatContext): Statement;
52
- formatString(input: string): Statement;
53
- formatInlineValue(rawValue: any): Statement;
54
- formatValue(rawValue: any, ctx: FormatContext): Statement;
55
- formatExpr(expr: ExprData, ctx: FormatContext): Statement;
56
- }
1
+ import { ColumnData, ColumnType } from './Column';
2
+ import { ExprData } from './Expr';
3
+ import { OrderBy } from './OrderBy';
4
+ import { Query } from './Query';
5
+ import { Sanitizer } from './Sanitizer';
6
+ import { Statement } from './Statement';
7
+ import { Target } from './Target';
8
+ export interface FormatContext {
9
+ nameResult?: string;
10
+ skipTableName?: boolean;
11
+ forceInline?: boolean;
12
+ formatAsJson?: boolean;
13
+ formatSubject?: (subject: Statement) => Statement;
14
+ }
15
+ export declare abstract class Formatter implements Sanitizer {
16
+ constructor();
17
+ abstract escapeValue(value: any): string;
18
+ abstract escapeIdentifier(ident: string): string;
19
+ abstract formatSqlAccess(on: Statement, field: string): Statement;
20
+ abstract formatJsonAccess(on: Statement, field: string): Statement;
21
+ formatAccess(on: Statement, field: string, formatAsJson?: boolean): Statement;
22
+ compile<T>(query: Query<T>, formatInline?: boolean): import("./Statement").CompiledStatement;
23
+ format<T>(query: Query<T>, ctx?: FormatContext): Statement;
24
+ formatSelect(query: Query.Select, ctx: FormatContext): Statement;
25
+ formatInsert(query: Query.Insert, ctx: FormatContext): Statement;
26
+ formatUpdate(query: Query.Update, ctx: FormatContext): Statement;
27
+ formatDelete(query: Query.Delete, ctx: FormatContext): Statement;
28
+ formatCreateTable(query: Query.CreateTable, ctx: FormatContext): Statement;
29
+ formatCreateIndex(query: Query.CreateIndex, ctx?: FormatContext): Statement;
30
+ formatDropIndex(query: Query.DropIndex, ctx: FormatContext): Statement;
31
+ formatAlterTable(query: Query.AlterTable, ctx: FormatContext): Statement;
32
+ formatTransaction({ op, id }: Query.Transaction, ctx: FormatContext): Statement;
33
+ formatBatch(queries: Query[], ctx: FormatContext): Statement;
34
+ formatRaw({ strings, params }: Query.Raw, ctx: FormatContext): Statement;
35
+ formatColumn(column: ColumnData): Statement;
36
+ formatContraintReference(reference: ExprData): Statement;
37
+ formatType(type: ColumnType): Statement;
38
+ formatInsertRow(columns: Record<string, ColumnData>, row: Record<string, any>): Statement;
39
+ formatColumnValue(column: ColumnData, columnValue: any): Statement;
40
+ formatTarget(target: Target, ctx: FormatContext): Statement;
41
+ formatWhere(expr: ExprData | undefined, ctx: FormatContext): Statement | undefined;
42
+ formatHaving(expr: ExprData | undefined, ctx: FormatContext): Statement | undefined;
43
+ formatGroupBy(groupBy: Array<ExprData> | undefined, ctx: FormatContext): Statement | undefined;
44
+ formatOrderBy(orderBy: Array<OrderBy> | undefined, ctx: FormatContext): Statement | undefined;
45
+ formatLimit({ limit, offset, singleResult }: Query.QueryBase, ctx: FormatContext): Statement | undefined;
46
+ formatSelection(selection: ExprData, ctx: FormatContext): Statement;
47
+ formatExprValue(expr: ExprData, ctx: FormatContext): Statement;
48
+ formatIn(expr: ExprData, ctx: FormatContext): Statement;
49
+ formatUnwrapArray(stmt: Statement): Statement;
50
+ retrieveField(expr: ExprData, field: string): ExprData | undefined;
51
+ formatField(expr: ExprData, field: string, ctx: FormatContext): Statement;
52
+ formatString(input: string): Statement;
53
+ formatInlineValue(rawValue: any): Statement;
54
+ formatValue(rawValue: any, ctx: FormatContext): Statement;
55
+ formatExpr(expr: ExprData, ctx: FormatContext): Statement;
56
+ }
@@ -1,6 +1,6 @@
1
1
  // src/lib/Formatter.ts
2
2
  import { ColumnType } from "./Column.js";
3
- import { BinOp, ExprData, ExprType, UnOp } from "./Expr.js";
3
+ import { BinOp, Expr, ExprData, ExprType, UnOp } from "./Expr.js";
4
4
  import { OrderDirection } from "./OrderBy.js";
5
5
  import { ParamType } from "./Param.js";
6
6
  import { Query, QueryType } from "./Query.js";
@@ -9,6 +9,7 @@ import {
9
9
  call,
10
10
  identifier,
11
11
  newline,
12
+ param,
12
13
  parenthesis,
13
14
  raw,
14
15
  separated,
@@ -163,7 +164,14 @@ var Formatter = class {
163
164
  );
164
165
  }
165
166
  formatRaw({ strings, params }, ctx) {
166
- return Statement.tag(strings, ...params);
167
+ return Statement.tag(
168
+ strings,
169
+ params.map((param2) => {
170
+ if (param2 instanceof Expr)
171
+ return this.formatExpr(param2.expr, ctx);
172
+ return this.formatValue(param2, ctx);
173
+ })
174
+ );
167
175
  }
168
176
  formatColumn(column) {
169
177
  return identifier(column.name).add(this.formatType(column.type)).addIf(column.unique, "UNIQUE").addIf(column.autoIncrement, "AUTOINCREMENT").addIf(column.primaryKey, "PRIMARY KEY").addIf(!column.nullable, "NOT NULL").addIf(
@@ -209,6 +217,8 @@ var Formatter = class {
209
217
  );
210
218
  }
211
219
  formatColumnValue(column, columnValue) {
220
+ if (columnValue instanceof Expr)
221
+ return this.formatExprValue(columnValue.expr, {});
212
222
  const isNull = columnValue === void 0 || columnValue === null;
213
223
  const isOptional = column.nullable || column.autoIncrement || column.primaryKey;
214
224
  if (isNull) {
@@ -231,7 +241,7 @@ var Formatter = class {
231
241
  case ColumnType.Boolean:
232
242
  if (typeof columnValue !== "boolean")
233
243
  throw new TypeError(`Expected boolean for column ${column.name}`);
234
- return value(columnValue);
244
+ return raw(this.escapeValue(columnValue));
235
245
  case ColumnType.Json:
236
246
  if (typeof columnValue !== "object")
237
247
  throw new TypeError(`Expected object for column ${column.name}`);
@@ -409,7 +419,7 @@ var Formatter = class {
409
419
  case ParamType.Value:
410
420
  return this.formatValue(expr.param.value, ctx);
411
421
  case ParamType.Named:
412
- throw new Error("todo");
422
+ return param(expr.param.name);
413
423
  }
414
424
  case ExprType.Field:
415
425
  return this.formatField(expr.expr, expr.field, ctx);
@@ -1,7 +1,7 @@
1
- import { EV, Expr } from './Expr';
2
- export declare const Functions: Functions;
3
- /** These will have to be supported in every driver */
4
- export type Functions = {
5
- count(x?: Expr<any>): Expr<number>;
6
- iif<T>(x: EV<boolean>, y: EV<T>, z: EV<T>): Expr<T>;
7
- };
1
+ import { EV, Expr } from './Expr';
2
+ export declare const Functions: Functions;
3
+ /** These will have to be supported in every driver */
4
+ export type Functions = {
5
+ count(x?: Expr<any>): Expr<number>;
6
+ iif<T>(x: EV<boolean>, y: EV<T>, z: EV<T>): Expr<T>;
7
+ };
package/dist/lib/Id.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type Id<T extends {
2
- id: any;
3
- }> = T['id'];
1
+ export type Id<T extends {
2
+ id: any;
3
+ }> = T['id'];
@@ -1,17 +1,17 @@
1
- import { Expr, ExprData } from './Expr';
2
- interface PartialIndexData {
3
- on: Array<ExprData>;
4
- where?: ExprData;
5
- unique?: boolean;
6
- }
7
- export interface IndexData extends PartialIndexData {
8
- name: string;
9
- }
10
- export declare class Index {
11
- data: PartialIndexData;
12
- constructor(data: PartialIndexData);
13
- where(where: Expr<boolean>): Index;
14
- unique(): Index;
15
- }
16
- export declare function index(...on: Array<Expr<any>>): Index;
17
- export {};
1
+ import { Expr, ExprData } from './Expr';
2
+ interface PartialIndexData {
3
+ on: Array<ExprData>;
4
+ unique?: boolean;
5
+ where?: ExprData;
6
+ }
7
+ export interface IndexData extends PartialIndexData {
8
+ name: string;
9
+ }
10
+ export declare class Index {
11
+ data: PartialIndexData;
12
+ constructor(data: PartialIndexData);
13
+ unique(): Index;
14
+ where(where: Expr<boolean>): Index;
15
+ }
16
+ export declare function index(...on: Array<Expr<any>>): Index;
17
+ export {};
package/dist/lib/Index.js CHANGED
@@ -4,12 +4,12 @@ var Index = class {
4
4
  constructor(data) {
5
5
  this.data = data;
6
6
  }
7
- where(where) {
8
- return new Index({ ...this.data, where: ExprData.create(where) });
9
- }
10
7
  unique() {
11
8
  return new Index({ ...this.data, unique: true });
12
9
  }
10
+ where(where) {
11
+ return new Index({ ...this.data, where: ExprData.create(where) });
12
+ }
13
13
  };
14
14
  function index(...on) {
15
15
  return new Index({ on: on.map(ExprData.create) });
package/dist/lib/Ops.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { Cursor } from './Cursor';
2
- import { Table } from './Table';
3
- export declare function selectAll<Row>(table: Table<Row>): Cursor.SelectMultiple<Row>;
4
- export declare function selectFirst<Row>(table: Table<Row>): Cursor.SelectSingle<Row>;
5
- export declare function update<Row>(table: Table<Row>): Cursor.Update<Row>;
6
- export declare function insertInto<Row>(table: Table<Row>): Cursor.Insert<Row>;
7
- export declare function deleteFrom<Row>(table: Table<Row>): Cursor.Delete<Row>;
8
- export declare function create(...tables: Array<Table<any>>): Cursor.Batch;
1
+ import { Cursor } from './Cursor';
2
+ import { Table } from './Table';
3
+ export declare function selectAll<Row>(table: Table<Row>): Cursor.SelectMultiple<Row>;
4
+ export declare function selectFirst<Row>(table: Table<Row>): Cursor.SelectSingle<Row>;
5
+ export declare function update<Row>(table: Table<Row>): Cursor.Update<Row>;
6
+ export declare function insertInto<Row>(table: Table<Row>): Cursor.Insert<Row>;
7
+ export declare function deleteFrom<Row>(table: Table<Row>): Cursor.Delete;
8
+ export declare function create(...tables: Array<Table<any>>): Cursor.Batch;
@@ -1,9 +1,9 @@
1
- import { ExprData } from './Expr';
2
- export declare enum OrderDirection {
3
- Asc = "Asc",
4
- Desc = "Desc"
5
- }
6
- export type OrderBy = {
7
- expr: ExprData;
8
- order: OrderDirection;
9
- };
1
+ import { ExprData } from './Expr';
2
+ export declare enum OrderDirection {
3
+ Asc = "Asc",
4
+ Desc = "Desc"
5
+ }
6
+ export type OrderBy = {
7
+ expr: ExprData;
8
+ order: OrderDirection;
9
+ };