rado 0.1.62 → 0.1.64

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 (151) hide show
  1. package/dist/define/Column.d.ts +58 -58
  2. package/dist/define/Cursor.d.ts +87 -87
  3. package/dist/define/Cursor.js +8 -0
  4. package/dist/define/Expr.d.ts +173 -172
  5. package/dist/define/Expr.js +44 -41
  6. package/dist/define/Fields.d.ts +13 -13
  7. package/dist/define/Functions.d.ts +5 -5
  8. package/dist/define/Id.d.ts +3 -3
  9. package/dist/define/Index.d.ts +17 -17
  10. package/dist/define/Ops.d.ts +9 -7
  11. package/dist/define/Ops.js +8 -0
  12. package/dist/define/OrderBy.d.ts +9 -9
  13. package/dist/define/Param.d.ts +15 -15
  14. package/dist/define/Query.d.ts +109 -109
  15. package/dist/define/Schema.d.ts +18 -18
  16. package/dist/define/Selection.d.ts +20 -20
  17. package/dist/define/Table.d.ts +62 -62
  18. package/dist/define/Target.d.ts +38 -38
  19. package/dist/define/Update.d.ts +4 -4
  20. package/dist/driver/better-sqlite3.d.ts +15 -15
  21. package/dist/driver/bun-sqlite.d.ts +18 -18
  22. package/dist/driver/sql.js.d.ts +15 -15
  23. package/dist/driver/sqlite3.d.ts +18 -18
  24. package/dist/index.d.ts +21 -21
  25. package/dist/lib/Driver.d.ts +110 -110
  26. package/dist/lib/Formatter.d.ts +81 -81
  27. package/dist/lib/Formatter.js +18 -12
  28. package/dist/lib/Sanitizer.d.ts +5 -5
  29. package/dist/lib/SqlError.d.ts +3 -3
  30. package/dist/lib/Statement.d.ts +33 -33
  31. package/dist/sqlite/SqliteFormatter.d.ts +11 -11
  32. package/dist/sqlite/SqliteFunctions.d.ts +165 -165
  33. package/dist/sqlite/SqliteSchema.d.ts +25 -25
  34. package/dist/sqlite.d.ts +2 -2
  35. package/package.json +60 -60
  36. package/dist/CPU.20230126.092143.12244.0.001.cpuprofile +0 -1
  37. package/dist/Column.d.ts +0 -54
  38. package/dist/Column.js +0 -63
  39. package/dist/Cursor.d.ts +0 -77
  40. package/dist/Cursor.js +0 -221
  41. package/dist/Driver.d.ts +0 -89
  42. package/dist/Driver.js +0 -262
  43. package/dist/Expr.d.ts +0 -149
  44. package/dist/Expr.js +0 -284
  45. package/dist/Fields.d.ts +0 -11
  46. package/dist/Fields.js +0 -0
  47. package/dist/Formatter.d.ts +0 -55
  48. package/dist/Formatter.js +0 -496
  49. package/dist/Functions.d.ts +0 -7
  50. package/dist/Functions.js +0 -11
  51. package/dist/Id.d.ts +0 -3
  52. package/dist/Id.js +0 -0
  53. package/dist/Ops.d.ts +0 -8
  54. package/dist/Ops.js +0 -45
  55. package/dist/OrderBy.d.ts +0 -9
  56. package/dist/OrderBy.js +0 -9
  57. package/dist/Param.d.ts +0 -15
  58. package/dist/Param.js +0 -18
  59. package/dist/Query.d.ts +0 -107
  60. package/dist/Query.js +0 -74
  61. package/dist/Sanitizer.d.ts +0 -4
  62. package/dist/Sanitizer.js +0 -0
  63. package/dist/Schema.d.ts +0 -23
  64. package/dist/Schema.js +0 -60
  65. package/dist/Selection.d.ts +0 -20
  66. package/dist/Selection.js +0 -7
  67. package/dist/Statement.d.ts +0 -57
  68. package/dist/Statement.js +0 -184
  69. package/dist/Table.d.ts +0 -56
  70. package/dist/Table.js +0 -104
  71. package/dist/Target.d.ts +0 -30
  72. package/dist/Target.js +0 -37
  73. package/dist/Update.d.ts +0 -4
  74. package/dist/Update.js +0 -0
  75. package/dist/lib/Column.d.ts +0 -57
  76. package/dist/lib/Column.js +0 -63
  77. package/dist/lib/Cursor.d.ts +0 -79
  78. package/dist/lib/Cursor.js +0 -231
  79. package/dist/lib/Expr.d.ts +0 -154
  80. package/dist/lib/Expr.js +0 -284
  81. package/dist/lib/Fields.d.ts +0 -13
  82. package/dist/lib/Fields.js +0 -0
  83. package/dist/lib/Functions.d.ts +0 -5
  84. package/dist/lib/Functions.js +0 -11
  85. package/dist/lib/Id.d.ts +0 -3
  86. package/dist/lib/Id.js +0 -0
  87. package/dist/lib/Index.d.ts +0 -17
  88. package/dist/lib/Index.js +0 -20
  89. package/dist/lib/Ops.d.ts +0 -8
  90. package/dist/lib/Ops.js +0 -45
  91. package/dist/lib/OrderBy.d.ts +0 -9
  92. package/dist/lib/OrderBy.js +0 -9
  93. package/dist/lib/Param.d.ts +0 -20
  94. package/dist/lib/Param.js +0 -27
  95. package/dist/lib/Query.d.ts +0 -109
  96. package/dist/lib/Query.js +0 -74
  97. package/dist/lib/Schema.d.ts +0 -18
  98. package/dist/lib/Schema.js +0 -67
  99. package/dist/lib/Selection.d.ts +0 -20
  100. package/dist/lib/Selection.js +0 -7
  101. package/dist/lib/Table.d.ts +0 -62
  102. package/dist/lib/Table.js +0 -130
  103. package/dist/lib/Target.d.ts +0 -30
  104. package/dist/lib/Target.js +0 -37
  105. package/dist/lib/Update.d.ts +0 -4
  106. package/dist/lib/Update.js +0 -0
  107. package/dist/sqlite/index.d.ts +0 -2
  108. package/dist/sqlite/index.js +0 -3
  109. package/dist/src/driver/better-sqlite3.js +0 -49
  110. package/dist/src/driver/sql.js.js +0 -66
  111. package/dist/src/driver/sqlite3.js +0 -87
  112. package/dist/src/index.js +0 -24
  113. package/dist/src/lib/Column.js +0 -63
  114. package/dist/src/lib/Cursor.js +0 -231
  115. package/dist/src/lib/Driver.js +0 -316
  116. package/dist/src/lib/Expr.js +0 -284
  117. package/dist/src/lib/Fields.js +0 -0
  118. package/dist/src/lib/Formatter.js +0 -625
  119. package/dist/src/lib/Functions.js +0 -11
  120. package/dist/src/lib/Id.js +0 -0
  121. package/dist/src/lib/Index.js +0 -20
  122. package/dist/src/lib/Ops.js +0 -45
  123. package/dist/src/lib/OrderBy.js +0 -9
  124. package/dist/src/lib/Param.js +0 -27
  125. package/dist/src/lib/Query.js +0 -74
  126. package/dist/src/lib/Sanitizer.js +0 -0
  127. package/dist/src/lib/Schema.js +0 -67
  128. package/dist/src/lib/Selection.js +0 -7
  129. package/dist/src/lib/Statement.js +0 -103
  130. package/dist/src/lib/Table.js +0 -130
  131. package/dist/src/lib/Target.js +0 -37
  132. package/dist/src/lib/Update.js +0 -0
  133. package/dist/src/sqlite/SqliteFormatter.js +0 -67
  134. package/dist/src/sqlite/SqliteFunctions.js +0 -146
  135. package/dist/src/sqlite/SqliteSchema.js +0 -47
  136. package/dist/src/sqlite.js +0 -3
  137. package/dist/test/DbSuite.js +0 -28
  138. package/dist/test/TSTestTypes.js +0 -6
  139. package/dist/test/TestBasic.js +0 -172
  140. package/dist/test/TestExtend.js +0 -68
  141. package/dist/test/TestFts5.js +0 -34
  142. package/dist/test/TestFunctions.js +0 -28
  143. package/dist/test/TestJoins.js +0 -34
  144. package/dist/test/TestJson.js +0 -33
  145. package/dist/test/TestPrepare.js +0 -27
  146. package/dist/test/TestRawSql.js +0 -31
  147. package/dist/test/TestSchema.js +0 -69
  148. package/dist/test/TestSubQueries.js +0 -79
  149. package/dist/test/TestTransaction.js +0 -54
  150. package/dist/test/TestUpdate.js +0 -95
  151. package/dist/test/index.js +0 -14
@@ -1,172 +1,173 @@
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 UnOpType {
9
- Not = "Not",
10
- IsNull = "IsNull"
11
- }
12
- export declare enum BinOpType {
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 = ExprData.UnOp | ExprData.BinOp | ExprData.Field | ExprData.Param | ExprData.Call | ExprData.Query | ExprData.Record | ExprData.Merge | ExprData.Row | ExprData.Map | ExprData.Filter | ExprData.Case;
48
- export declare namespace ExprData {
49
- type UnOp = {
50
- type: ExprType.UnOp;
51
- op: UnOpType;
52
- expr: ExprData;
53
- };
54
- type BinOp = {
55
- type: ExprType.BinOp;
56
- op: BinOpType;
57
- a: ExprData;
58
- b: ExprData;
59
- };
60
- type Field = {
61
- type: ExprType.Field;
62
- expr: ExprData;
63
- field: string;
64
- };
65
- type Param = {
66
- type: ExprType.Param;
67
- param: ParamData;
68
- };
69
- type Call = {
70
- type: ExprType.Call;
71
- method: string;
72
- params: Array<ExprData>;
73
- };
74
- type Query = {
75
- type: ExprType.Query;
76
- query: Query.Select;
77
- };
78
- type Record = {
79
- type: ExprType.Record;
80
- fields: {
81
- [key: string]: ExprData;
82
- };
83
- };
84
- type Merge = {
85
- type: ExprType.Merge;
86
- a: ExprData;
87
- b: ExprData;
88
- };
89
- type Row = {
90
- type: ExprType.Row;
91
- target: Target;
92
- };
93
- type Map = {
94
- type: ExprType.Map;
95
- target: Target;
96
- result: ExprData;
97
- };
98
- type Filter = {
99
- type: ExprType.Filter;
100
- target: Target;
101
- condition: ExprData;
102
- };
103
- type Case = {
104
- type: ExprType.Case;
105
- expr: ExprData;
106
- cases: {
107
- [key: string]: ExprData;
108
- };
109
- defaultCase?: ExprData;
110
- };
111
- }
112
- export declare const ExprData: {
113
- UnOp(op: UnOpType, expr: ExprData): ExprData;
114
- BinOp(op: BinOpType, a: ExprData, b: ExprData): ExprData;
115
- Field(expr: ExprData, field: string): ExprData;
116
- Param(param: ParamData): ExprData;
117
- Call(method: string, params: Array<ExprData>): ExprData;
118
- Query(query: Query.Select): ExprData;
119
- Record(fields: Record<string, ExprData>): ExprData;
120
- Merge(a: ExprData, b: ExprData): ExprData;
121
- Row(target: Target): ExprData;
122
- Map(target: Target, result: ExprData): ExprData;
123
- Filter(target: Target, condition: ExprData): ExprData;
124
- Case(expr: ExprData, cases: Record<string, ExprData>, defaultCase?: ExprData): ExprData;
125
- create(input: any): ExprData;
126
- };
127
- /** Expression or value of type T */
128
- export type EV<T> = Expr<T> | T;
129
- export declare class Expr<T> {
130
- expr: ExprData;
131
- static NULL: ExprData;
132
- static value<T>(value: T): Expr<T>;
133
- static create<T>(input: EV<T>): Expr<T>;
134
- static and(...conditions: Array<EV<boolean>>): Expr<boolean>;
135
- static or(...conditions: Array<EV<boolean>>): Expr<boolean>;
136
- constructor(expr: ExprData);
137
- asc(): OrderBy;
138
- desc(): OrderBy;
139
- not(): Expr<boolean>;
140
- or(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
141
- and(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
142
- isNull(): Expr<boolean>;
143
- isNotNull(): Expr<boolean>;
144
- isNot(that: EV<T>): Expr<boolean>;
145
- is(that: EV<T> | Cursor.SelectSingle<T>): Expr<boolean>;
146
- in(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
147
- notIn(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
148
- add(this: Expr<number>, that: EV<number>): Expr<number>;
149
- substract(this: Expr<number>, that: EV<number>): Expr<number>;
150
- multiply(this: Expr<number>, that: EV<number>): Expr<number>;
151
- remainder(this: Expr<number>, that: EV<number>): Expr<number>;
152
- divide(this: Expr<number>, that: EV<number>): Expr<number>;
153
- greater(that: EV<any>): Expr<boolean>;
154
- greaterOrEqual(that: EV<any>): Expr<boolean>;
155
- less(that: EV<any>): Expr<boolean>;
156
- lessOrEqual(that: EV<any>): Expr<boolean>;
157
- concat(this: Expr<string>, that: EV<string>): Expr<string>;
158
- like(this: Expr<string>, that: EV<string>): Expr<boolean>;
159
- glob(this: Expr<string>, that: EV<string>): Expr<boolean>;
160
- match(this: Expr<string>, that: EV<string>): Expr<boolean>;
161
- with<X extends Selection>(that: X): Selection.With<T, X>;
162
- at<T>(this: Expr<Array<T>>, index: number): Expr<T | null>;
163
- filter<T>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => Expr<boolean>): Expr<Array<T>>;
164
- map<T, X extends Selection>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => X): Expr<Array<Selection.Infer<X>>>;
165
- sure(): Expr<NonNullable<T>>;
166
- get<T>(name: string): Expr<T>;
167
- }
168
- export declare namespace Expr {
169
- type Record<T> = Expr<T> & {
170
- [K in keyof T]: Expr<T[K]>;
171
- };
172
- }
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 UnOpType {
9
+ Not = "Not",
10
+ IsNull = "IsNull"
11
+ }
12
+ export declare enum BinOpType {
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 = ExprData.UnOp | ExprData.BinOp | ExprData.Field | ExprData.Param | ExprData.Call | ExprData.Query | ExprData.Record | ExprData.Merge | ExprData.Row | ExprData.Map | ExprData.Filter | ExprData.Case;
48
+ export declare namespace ExprData {
49
+ type UnOp = {
50
+ type: ExprType.UnOp;
51
+ op: UnOpType;
52
+ expr: ExprData;
53
+ };
54
+ type BinOp = {
55
+ type: ExprType.BinOp;
56
+ op: BinOpType;
57
+ a: ExprData;
58
+ b: ExprData;
59
+ };
60
+ type Field = {
61
+ type: ExprType.Field;
62
+ expr: ExprData;
63
+ field: string;
64
+ };
65
+ type Param = {
66
+ type: ExprType.Param;
67
+ param: ParamData;
68
+ };
69
+ type Call = {
70
+ type: ExprType.Call;
71
+ method: string;
72
+ params: Array<ExprData>;
73
+ };
74
+ type Query = {
75
+ type: ExprType.Query;
76
+ query: Query.Select;
77
+ };
78
+ type Record = {
79
+ type: ExprType.Record;
80
+ fields: {
81
+ [key: string]: ExprData;
82
+ };
83
+ };
84
+ type Merge = {
85
+ type: ExprType.Merge;
86
+ a: ExprData;
87
+ b: ExprData;
88
+ };
89
+ type Row = {
90
+ type: ExprType.Row;
91
+ target: Target;
92
+ };
93
+ type Map = {
94
+ type: ExprType.Map;
95
+ target: Target;
96
+ result: ExprData;
97
+ };
98
+ type Filter = {
99
+ type: ExprType.Filter;
100
+ target: Target;
101
+ condition: ExprData;
102
+ };
103
+ type Case = {
104
+ type: ExprType.Case;
105
+ expr: ExprData;
106
+ cases: {
107
+ [key: string]: ExprData;
108
+ };
109
+ defaultCase?: ExprData;
110
+ };
111
+ }
112
+ export declare const ExprData: {
113
+ UnOp(op: UnOpType, expr: ExprData): ExprData;
114
+ BinOp(op: BinOpType, a: ExprData, b: ExprData): ExprData;
115
+ Field(expr: ExprData, field: string): ExprData;
116
+ Param(param: ParamData): ExprData;
117
+ Call(method: string, params: Array<ExprData>): ExprData;
118
+ Query(query: Query.Select): ExprData;
119
+ Record(fields: Record<string, ExprData>): ExprData;
120
+ Merge(a: ExprData, b: ExprData): ExprData;
121
+ Row(target: Target): ExprData;
122
+ Map(target: Target, result: ExprData): ExprData;
123
+ Filter(target: Target, condition: ExprData): ExprData;
124
+ Case(expr: ExprData, cases: Record<string, ExprData>, defaultCase?: ExprData): ExprData;
125
+ create(input: any): ExprData;
126
+ };
127
+ /** Expression or value of type T */
128
+ export type EV<T> = Expr<T> | T;
129
+ export declare class Expr<T> {
130
+ expr: ExprData;
131
+ static NULL: ExprData;
132
+ static value<T>(value: T): Expr<T>;
133
+ static create<T>(input: EV<T>): Expr<T>;
134
+ static and(...conditions: Array<EV<boolean>>): Expr<boolean>;
135
+ static or(...conditions: Array<EV<boolean>>): Expr<boolean>;
136
+ constructor(expr: ExprData);
137
+ asc(): OrderBy;
138
+ desc(): OrderBy;
139
+ not(): Expr<boolean>;
140
+ or(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
141
+ and(this: Expr<boolean>, that: EV<boolean>): Expr<boolean>;
142
+ is(that: EV<T> | Cursor.SelectSingle<T>): Expr<boolean>;
143
+ isNot(that: EV<T>): Expr<boolean>;
144
+ isNull(): Expr<boolean>;
145
+ isNotNull(): Expr<boolean>;
146
+ isIn(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
147
+ isNotIn(that: EV<Array<T>> | Cursor.SelectMultiple<T>): Expr<boolean>;
148
+ isGreater(that: EV<any>): Expr<boolean>;
149
+ isGreaterOrEqual(that: EV<any>): Expr<boolean>;
150
+ isLess(that: EV<any>): Expr<boolean>;
151
+ isLessOrEqual(that: EV<any>): Expr<boolean>;
152
+ add(this: Expr<number>, that: EV<number>): Expr<number>;
153
+ substract(this: Expr<number>, that: EV<number>): Expr<number>;
154
+ multiply(this: Expr<number>, that: EV<number>): Expr<number>;
155
+ remainder(this: Expr<number>, that: EV<number>): Expr<number>;
156
+ divide(this: Expr<number>, that: EV<number>): Expr<number>;
157
+ concat(this: Expr<string>, that: EV<string>): Expr<string>;
158
+ like(this: Expr<string>, that: EV<string>): Expr<boolean>;
159
+ glob(this: Expr<string>, that: EV<string>): Expr<boolean>;
160
+ match(this: Expr<string>, that: EV<string>): Expr<boolean>;
161
+ with<X extends Selection>(that: X): Selection.With<T, X>;
162
+ at<T>(this: Expr<Array<T>>, index: number): Expr<T | null>;
163
+ includes<T>(this: Expr<Array<T>>, value: EV<T>): Expr<boolean>;
164
+ filter<T>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => Expr<boolean>): Expr<Array<T>>;
165
+ map<T, X extends Selection>(this: Expr<Array<T>>, fn: (cursor: Fields<T>) => X): Expr<Array<Selection.Infer<X>>>;
166
+ sure(): Expr<NonNullable<T>>;
167
+ get<T>(name: string): Expr<T>;
168
+ }
169
+ export declare namespace Expr {
170
+ type Record<T> = Expr<T> & {
171
+ [K in keyof T]: Expr<T[K]>;
172
+ };
173
+ }
@@ -151,7 +151,7 @@ var _Expr = class {
151
151
  return { expr: this.expr, order: OrderDirection.Desc };
152
152
  }
153
153
  not() {
154
- return unop(this, "Not" /* Not */);
154
+ return new _Expr(ExprData.UnOp("Not" /* Not */, this.expr));
155
155
  }
156
156
  or(that) {
157
157
  const a = this.expr;
@@ -171,66 +171,72 @@ var _Expr = class {
171
171
  return new _Expr(b);
172
172
  return new _Expr(ExprData.BinOp("And" /* And */, a, b));
173
173
  }
174
+ is(that) {
175
+ if (that === null || that instanceof _Expr && isConstant(that.expr, null))
176
+ return this.isNull();
177
+ return new _Expr(ExprData.BinOp("Equals" /* Equals */, this.expr, toExpr(that)));
178
+ }
179
+ isNot(that) {
180
+ if (that === null || that instanceof _Expr && isConstant(that.expr, null))
181
+ return this.isNotNull();
182
+ return new _Expr(
183
+ ExprData.BinOp("NotEquals" /* NotEquals */, this.expr, toExpr(that))
184
+ );
185
+ }
174
186
  isNull() {
175
- return unop(this, "IsNull" /* IsNull */);
187
+ return new _Expr(ExprData.UnOp("IsNull" /* IsNull */, this.expr));
176
188
  }
177
189
  isNotNull() {
178
190
  return this.isNull().not();
179
191
  }
180
- isNot(that) {
181
- if (that === null || that instanceof _Expr && isConstant(that.expr, null))
182
- return this.isNotNull();
183
- return binop(this, "NotEquals" /* NotEquals */, that);
192
+ isIn(that) {
193
+ return new _Expr(ExprData.BinOp("In" /* In */, this.expr, toExpr(that)));
184
194
  }
185
- is(that) {
186
- if (that === null || that instanceof _Expr && isConstant(that.expr, null))
187
- return this.isNull();
188
- return binop(this, "Equals" /* Equals */, that);
195
+ isNotIn(that) {
196
+ return new _Expr(ExprData.BinOp("NotIn" /* NotIn */, this.expr, toExpr(that)));
197
+ }
198
+ isGreater(that) {
199
+ return new _Expr(ExprData.BinOp("Greater" /* Greater */, this.expr, toExpr(that)));
189
200
  }
190
- in(that) {
191
- return binop(this, "In" /* In */, that);
201
+ isGreaterOrEqual(that) {
202
+ return new _Expr(
203
+ ExprData.BinOp("GreaterOrEqual" /* GreaterOrEqual */, this.expr, toExpr(that))
204
+ );
192
205
  }
193
- notIn(that) {
194
- return binop(this, "NotIn" /* NotIn */, that);
206
+ isLess(that) {
207
+ return new _Expr(ExprData.BinOp("Less" /* Less */, this.expr, toExpr(that)));
208
+ }
209
+ isLessOrEqual(that) {
210
+ return new _Expr(
211
+ ExprData.BinOp("LessOrEqual" /* LessOrEqual */, this.expr, toExpr(that))
212
+ );
195
213
  }
196
214
  add(that) {
197
- return binop(this, "Add" /* Add */, that);
215
+ return new _Expr(ExprData.BinOp("Add" /* Add */, this.expr, toExpr(that)));
198
216
  }
199
217
  substract(that) {
200
- return binop(this, "Subt" /* Subt */, that);
218
+ return new _Expr(ExprData.BinOp("Subt" /* Subt */, this.expr, toExpr(that)));
201
219
  }
202
220
  multiply(that) {
203
- return binop(this, "Mult" /* Mult */, that);
221
+ return new _Expr(ExprData.BinOp("Mult" /* Mult */, this.expr, toExpr(that)));
204
222
  }
205
223
  remainder(that) {
206
- return binop(this, "Mod" /* Mod */, that);
224
+ return new _Expr(ExprData.BinOp("Mod" /* Mod */, this.expr, toExpr(that)));
207
225
  }
208
226
  divide(that) {
209
- return binop(this, "Div" /* Div */, that);
210
- }
211
- greater(that) {
212
- return binop(this, "Greater" /* Greater */, that);
213
- }
214
- greaterOrEqual(that) {
215
- return binop(this, "GreaterOrEqual" /* GreaterOrEqual */, that);
216
- }
217
- less(that) {
218
- return binop(this, "Less" /* Less */, that);
219
- }
220
- lessOrEqual(that) {
221
- return binop(this, "LessOrEqual" /* LessOrEqual */, that);
227
+ return new _Expr(ExprData.BinOp("Div" /* Div */, this.expr, toExpr(that)));
222
228
  }
223
229
  concat(that) {
224
- return binop(this, "Concat" /* Concat */, that);
230
+ return new _Expr(ExprData.BinOp("Concat" /* Concat */, this.expr, toExpr(that)));
225
231
  }
226
232
  like(that) {
227
- return binop(this, "Like" /* Like */, that);
233
+ return new _Expr(ExprData.BinOp("Like" /* Like */, this.expr, toExpr(that)));
228
234
  }
229
235
  glob(that) {
230
- return binop(this, "Glob" /* Glob */, that);
236
+ return new _Expr(ExprData.BinOp("Glob" /* Glob */, this.expr, toExpr(that)));
231
237
  }
232
238
  match(that) {
233
- return binop(this, "Match" /* Match */, that);
239
+ return new _Expr(ExprData.BinOp("Match" /* Match */, this.expr, toExpr(that)));
234
240
  }
235
241
  with(that) {
236
242
  return new _Expr(
@@ -240,6 +246,9 @@ var _Expr = class {
240
246
  at(index) {
241
247
  return this.get(`[${Number(index)}]`);
242
248
  }
249
+ includes(value) {
250
+ return _Expr.create(value).isIn(this);
251
+ }
243
252
  filter(fn) {
244
253
  const alias = `__${Math.random().toString(36).slice(2, 9)}`;
245
254
  const target = Target.Expr(this.expr, alias);
@@ -269,12 +278,6 @@ var _Expr = class {
269
278
  };
270
279
  var Expr = _Expr;
271
280
  __publicField(Expr, "NULL", toExpr(null));
272
- function unop(self, type) {
273
- return new Expr(ExprData.UnOp(type, self.expr));
274
- }
275
- function binop(self, type, that) {
276
- return new Expr(ExprData.BinOp(type, self.expr, toExpr(that)));
277
- }
278
281
  export {
279
282
  BinOpType,
280
283
  Expr,
@@ -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,5 +1,5 @@
1
- import { Expr } from './Expr';
2
- export declare const Functions: Functions;
3
- export type Functions = {
4
- [key: string]: (...args: Array<any>) => Expr<any>;
5
- };
1
+ import { Expr } from './Expr';
2
+ export declare const Functions: Functions;
3
+ export type Functions = {
4
+ [key: string]: (...args: Array<any>) => Expr<any>;
5
+ };
@@ -1,3 +1,3 @@
1
- export type Id<T> = T extends {
2
- id: any;
3
- } ? T['id'] : never;
1
+ export type Id<T> = T extends {
2
+ id: any;
3
+ } ? T['id'] : never;
@@ -1,17 +1,17 @@
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 {};
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 {};
@@ -1,7 +1,9 @@
1
- import { Cursor } from './Cursor';
2
- import { Table } from './Table';
3
- export declare function from<Row>(source: Table<Row> | Cursor.SelectMultiple<Row>): Cursor.SelectMultiple<Row>;
4
- export declare function update<Row>(table: Table<Row>): Cursor.Update<Row>;
5
- export declare function insertInto<Row>(table: Table<Row>): Cursor.Insert<Row>;
6
- export declare function deleteFrom<Row>(table: Table<Row>): Cursor.Delete;
7
- export declare function create(...tables: Array<Table<any>>): Cursor.Batch;
1
+ import { Cursor } from './Cursor';
2
+ import { Selection } from './Selection';
3
+ import { Table } from './Table';
4
+ export declare function select<X extends Selection>(selection: X): Cursor.SelectMultiple<Selection.Infer<X>>;
5
+ export declare function from<Row>(source: Table<Row> | Cursor.SelectMultiple<Row>): Cursor.SelectMultiple<Row>;
6
+ export declare function update<Row>(table: Table<Row>): Cursor.Update<Row>;
7
+ export declare function insertInto<Row>(table: Table<Row>): Cursor.Insert<Row>;
8
+ export declare function deleteFrom<Row>(table: Table<Row>): Cursor.Delete;
9
+ export declare function create(...tables: Array<Table<any>>): Cursor.Batch;
@@ -4,6 +4,13 @@ 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 select(selection) {
8
+ return new Cursor.SelectMultiple(
9
+ Query.Select({
10
+ selection: ExprData.create(selection)
11
+ })
12
+ );
13
+ }
7
14
  function from(source) {
8
15
  const target = "schema" in source ? Target.Table(source.schema()) : Target.Query(source.query());
9
16
  return new Cursor.SelectMultiple(
@@ -32,5 +39,6 @@ export {
32
39
  deleteFrom,
33
40
  from,
34
41
  insertInto,
42
+ select,
35
43
  update
36
44
  };
@@ -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
+ };
@@ -1,15 +1,15 @@
1
- export declare enum ParamType {
2
- Value = "Value",
3
- Named = "Named"
4
- }
5
- export type ParamData = {
6
- type: ParamType.Value;
7
- value: any;
8
- } | {
9
- type: ParamType.Named;
10
- name: string;
11
- };
12
- export declare const ParamData: {
13
- Value(value: any): ParamData;
14
- Named(name: string): ParamData;
15
- };
1
+ export declare enum ParamType {
2
+ Value = "Value",
3
+ Named = "Named"
4
+ }
5
+ export type ParamData = {
6
+ type: ParamType.Value;
7
+ value: any;
8
+ } | {
9
+ type: ParamType.Named;
10
+ name: string;
11
+ };
12
+ export declare const ParamData: {
13
+ Value(value: any): ParamData;
14
+ Named(name: string): ParamData;
15
+ };