@dsqlbase/core 0.0.1

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 (201) hide show
  1. package/dist/client/base.d.ts +9 -0
  2. package/dist/client/base.d.ts.map +1 -0
  3. package/dist/client/base.js +13 -0
  4. package/dist/client/base.js.map +1 -0
  5. package/dist/client/database.d.ts +5 -0
  6. package/dist/client/database.d.ts.map +1 -0
  7. package/dist/client/database.js +8 -0
  8. package/dist/client/database.js.map +1 -0
  9. package/dist/client/model.d.ts +19 -0
  10. package/dist/client/model.d.ts.map +1 -0
  11. package/dist/client/model.js +12 -0
  12. package/dist/client/model.js.map +1 -0
  13. package/dist/definition/base.d.ts +49 -0
  14. package/dist/definition/base.d.ts.map +1 -0
  15. package/dist/definition/base.js +54 -0
  16. package/dist/definition/base.js.map +1 -0
  17. package/dist/definition/column.d.ts +74 -0
  18. package/dist/definition/column.d.ts.map +1 -0
  19. package/dist/definition/column.js +94 -0
  20. package/dist/definition/column.js.map +1 -0
  21. package/dist/definition/constraint.d.ts +69 -0
  22. package/dist/definition/constraint.d.ts.map +1 -0
  23. package/dist/definition/constraint.js +79 -0
  24. package/dist/definition/constraint.js.map +1 -0
  25. package/dist/definition/domain.d.ts +39 -0
  26. package/dist/definition/domain.d.ts.map +1 -0
  27. package/dist/definition/domain.js +48 -0
  28. package/dist/definition/domain.js.map +1 -0
  29. package/dist/definition/index.d.ts +11 -0
  30. package/dist/definition/index.d.ts.map +1 -0
  31. package/dist/definition/index.js +11 -0
  32. package/dist/definition/index.js.map +1 -0
  33. package/dist/definition/indexes.d.ts +64 -0
  34. package/dist/definition/indexes.d.ts.map +1 -0
  35. package/dist/definition/indexes.js +84 -0
  36. package/dist/definition/indexes.js.map +1 -0
  37. package/dist/definition/namespace.d.ts +14 -0
  38. package/dist/definition/namespace.d.ts.map +1 -0
  39. package/dist/definition/namespace.js +15 -0
  40. package/dist/definition/namespace.js.map +1 -0
  41. package/dist/definition/relations.d.ts +53 -0
  42. package/dist/definition/relations.d.ts.map +1 -0
  43. package/dist/definition/relations.js +40 -0
  44. package/dist/definition/relations.js.map +1 -0
  45. package/dist/definition/schema.d.ts +14 -0
  46. package/dist/definition/schema.d.ts.map +1 -0
  47. package/dist/definition/schema.js +15 -0
  48. package/dist/definition/schema.js.map +1 -0
  49. package/dist/definition/sequence.d.ts +32 -0
  50. package/dist/definition/sequence.d.ts.map +1 -0
  51. package/dist/definition/sequence.js +59 -0
  52. package/dist/definition/sequence.js.map +1 -0
  53. package/dist/definition/table.d.ts +66 -0
  54. package/dist/definition/table.d.ts.map +1 -0
  55. package/dist/definition/table.js +59 -0
  56. package/dist/definition/table.js.map +1 -0
  57. package/dist/definition/view.d.ts +9 -0
  58. package/dist/definition/view.d.ts.map +1 -0
  59. package/dist/definition/view.js +11 -0
  60. package/dist/definition/view.js.map +1 -0
  61. package/dist/driver/codec.d.ts +13 -0
  62. package/dist/driver/codec.d.ts.map +1 -0
  63. package/dist/driver/codec.js +15 -0
  64. package/dist/driver/codec.js.map +1 -0
  65. package/dist/driver/index.d.ts +3 -0
  66. package/dist/driver/index.d.ts.map +1 -0
  67. package/dist/driver/index.js +2 -0
  68. package/dist/driver/index.js.map +1 -0
  69. package/dist/driver/session.d.ts +23 -0
  70. package/dist/driver/session.d.ts.map +1 -0
  71. package/dist/driver/session.js +2 -0
  72. package/dist/driver/session.js.map +1 -0
  73. package/dist/execution/column.d.ts +17 -0
  74. package/dist/execution/column.d.ts.map +1 -0
  75. package/dist/execution/column.js +23 -0
  76. package/dist/execution/column.js.map +1 -0
  77. package/dist/execution/context.d.ts +19 -0
  78. package/dist/execution/context.d.ts.map +1 -0
  79. package/dist/execution/context.js +14 -0
  80. package/dist/execution/context.js.map +1 -0
  81. package/dist/execution/dialect.d.ts +75 -0
  82. package/dist/execution/dialect.d.ts.map +1 -0
  83. package/dist/execution/dialect.js +123 -0
  84. package/dist/execution/dialect.js.map +1 -0
  85. package/dist/execution/index.d.ts +8 -0
  86. package/dist/execution/index.d.ts.map +1 -0
  87. package/dist/execution/index.js +7 -0
  88. package/dist/execution/index.js.map +1 -0
  89. package/dist/execution/operation.d.ts +140 -0
  90. package/dist/execution/operation.d.ts.map +1 -0
  91. package/dist/execution/operation.js +303 -0
  92. package/dist/execution/operation.js.map +1 -0
  93. package/dist/execution/schema.d.ts +38 -0
  94. package/dist/execution/schema.d.ts.map +1 -0
  95. package/dist/execution/schema.js +104 -0
  96. package/dist/execution/schema.js.map +1 -0
  97. package/dist/execution/table.d.ts +107 -0
  98. package/dist/execution/table.d.ts.map +1 -0
  99. package/dist/execution/table.js +46 -0
  100. package/dist/execution/table.js.map +1 -0
  101. package/dist/execution/thenable.d.ts +7 -0
  102. package/dist/execution/thenable.d.ts.map +1 -0
  103. package/dist/execution/thenable.js +12 -0
  104. package/dist/execution/thenable.js.map +1 -0
  105. package/dist/execution/types.d.ts +42 -0
  106. package/dist/execution/types.d.ts.map +1 -0
  107. package/dist/execution/types.js +2 -0
  108. package/dist/execution/types.js.map +1 -0
  109. package/dist/index.d.ts +4 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +4 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/runtime/base.d.ts +29 -0
  114. package/dist/runtime/base.d.ts.map +1 -0
  115. package/dist/runtime/base.js +3 -0
  116. package/dist/runtime/base.js.map +1 -0
  117. package/dist/runtime/column.d.ts +18 -0
  118. package/dist/runtime/column.d.ts.map +1 -0
  119. package/dist/runtime/column.js +24 -0
  120. package/dist/runtime/column.js.map +1 -0
  121. package/dist/runtime/context.d.ts +21 -0
  122. package/dist/runtime/context.d.ts.map +1 -0
  123. package/dist/runtime/context.js +14 -0
  124. package/dist/runtime/context.js.map +1 -0
  125. package/dist/runtime/dialect.d.ts +42 -0
  126. package/dist/runtime/dialect.d.ts.map +1 -0
  127. package/dist/runtime/dialect.js +2 -0
  128. package/dist/runtime/dialect.js.map +1 -0
  129. package/dist/runtime/executor.d.ts +12 -0
  130. package/dist/runtime/executor.d.ts.map +1 -0
  131. package/dist/runtime/executor.js +18 -0
  132. package/dist/runtime/executor.js.map +1 -0
  133. package/dist/runtime/index.d.ts +10 -0
  134. package/dist/runtime/index.d.ts.map +1 -0
  135. package/dist/runtime/index.js +8 -0
  136. package/dist/runtime/index.js.map +1 -0
  137. package/dist/runtime/operation.d.ts +82 -0
  138. package/dist/runtime/operation.d.ts.map +1 -0
  139. package/dist/runtime/operation.js +236 -0
  140. package/dist/runtime/operation.js.map +1 -0
  141. package/dist/runtime/query.d.ts +77 -0
  142. package/dist/runtime/query.d.ts.map +1 -0
  143. package/dist/runtime/query.js +125 -0
  144. package/dist/runtime/query.js.map +1 -0
  145. package/dist/runtime/registry.d.ts +27 -0
  146. package/dist/runtime/registry.d.ts.map +1 -0
  147. package/dist/runtime/registry.js +106 -0
  148. package/dist/runtime/registry.js.map +1 -0
  149. package/dist/runtime/session.d.ts +23 -0
  150. package/dist/runtime/session.d.ts.map +1 -0
  151. package/dist/runtime/session.js +2 -0
  152. package/dist/runtime/session.js.map +1 -0
  153. package/dist/runtime/table.d.ts +34 -0
  154. package/dist/runtime/table.d.ts.map +1 -0
  155. package/dist/runtime/table.js +46 -0
  156. package/dist/runtime/table.js.map +1 -0
  157. package/dist/sql/expressions.d.ts +25 -0
  158. package/dist/sql/expressions.d.ts.map +1 -0
  159. package/dist/sql/expressions.js +79 -0
  160. package/dist/sql/expressions.js.map +1 -0
  161. package/dist/sql/index.d.ts +4 -0
  162. package/dist/sql/index.d.ts.map +1 -0
  163. package/dist/sql/index.js +4 -0
  164. package/dist/sql/index.js.map +1 -0
  165. package/dist/sql/nodes.d.ts +49 -0
  166. package/dist/sql/nodes.d.ts.map +1 -0
  167. package/dist/sql/nodes.js +102 -0
  168. package/dist/sql/nodes.js.map +1 -0
  169. package/dist/sql/tag.d.ts +13 -0
  170. package/dist/sql/tag.d.ts.map +1 -0
  171. package/dist/sql/tag.js +32 -0
  172. package/dist/sql/tag.js.map +1 -0
  173. package/dist/sql/utils.d.ts +7 -0
  174. package/dist/sql/utils.d.ts.map +1 -0
  175. package/dist/sql/utils.js +15 -0
  176. package/dist/sql/utils.js.map +1 -0
  177. package/dist/types/index.d.ts +3 -0
  178. package/dist/types/index.d.ts.map +1 -0
  179. package/dist/types/index.js +2 -0
  180. package/dist/types/index.js.map +1 -0
  181. package/dist/types/object.d.ts +29 -0
  182. package/dist/types/object.d.ts.map +1 -0
  183. package/dist/types/object.js +2 -0
  184. package/dist/types/object.js.map +1 -0
  185. package/dist/types/prettify.d.ts +5 -0
  186. package/dist/types/prettify.d.ts.map +1 -0
  187. package/dist/types/prettify.js +3 -0
  188. package/dist/types/prettify.js.map +1 -0
  189. package/dist/utils/index.d.ts +3 -0
  190. package/dist/utils/index.d.ts.map +1 -0
  191. package/dist/utils/index.js +2 -0
  192. package/dist/utils/index.js.map +1 -0
  193. package/dist/utils/thenable.d.ts +7 -0
  194. package/dist/utils/thenable.d.ts.map +1 -0
  195. package/dist/utils/thenable.js +12 -0
  196. package/dist/utils/thenable.js.map +1 -0
  197. package/dist/utils/types.d.ts +46 -0
  198. package/dist/utils/types.d.ts.map +1 -0
  199. package/dist/utils/types.js +2 -0
  200. package/dist/utils/types.js.map +1 -0
  201. package/package.json +77 -0
@@ -0,0 +1,59 @@
1
+ import { SQLQuery } from "../sql/nodes.js";
2
+ import { DefinitionNode, Kind, NodeRef } from "./base.js";
3
+ import { CheckConstraintDefinition, PrimaryKeyConstraintDefinition, UniqueConstraintDefinition, } from "./constraint.js";
4
+ import { IndexDefinition } from "./indexes.js";
5
+ export class TableDefinition extends DefinitionNode {
6
+ kind = Kind.TABLE;
7
+ _namespace;
8
+ _indexes = [];
9
+ _constraints = [];
10
+ columns;
11
+ constructor(name, config) {
12
+ super(name);
13
+ this._namespace = config.schema;
14
+ this.columns = config.columns;
15
+ }
16
+ /** @internal */
17
+ _getColumnRefs() {
18
+ return Object.fromEntries(Object.entries(this.columns).map(([field, column]) => [field, new NodeRef(column)]));
19
+ }
20
+ index(name, config = {}) {
21
+ const idx = new IndexDefinition(name, { ...config, table: this });
22
+ this._indexes.push(idx);
23
+ return idx;
24
+ }
25
+ check(cb, name) {
26
+ const expression = new SQLQuery(cb(this._getColumnRefs()));
27
+ this._constraints?.push(new CheckConstraintDefinition(name ?? `${this.name}_check`, { expression }));
28
+ return this;
29
+ }
30
+ unique(cb) {
31
+ const cols = cb(this._getColumnRefs());
32
+ const constraint = new UniqueConstraintDefinition(`${this.name}_unique`, {
33
+ table: this,
34
+ columns: cols,
35
+ });
36
+ this._constraints?.push(constraint);
37
+ return constraint;
38
+ }
39
+ primaryKey(cb) {
40
+ const cols = cb(this._getColumnRefs());
41
+ const constraint = new PrimaryKeyConstraintDefinition(`${this.name}_primary_key`, {
42
+ table: this,
43
+ columns: cols,
44
+ });
45
+ this._constraints?.push(constraint);
46
+ return constraint;
47
+ }
48
+ toJSON() {
49
+ return {
50
+ kind: this.kind,
51
+ name: this.name,
52
+ namespace: this._namespace?.toJSON() ?? "public",
53
+ columns: Object.values(this.columns).map((col) => col.toJSON()),
54
+ indexes: this._indexes.map((idx) => idx.toJSON()),
55
+ constraints: this._constraints?.map((constraint) => constraint.toJSON()),
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/definition/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { DefinitionNode } from "./base.js";
2
+ export declare class ViewDefinition<TName extends string> extends DefinitionNode<TName> {
3
+ readonly kind: "VIEW";
4
+ toJSON(): {
5
+ readonly kind: "VIEW";
6
+ readonly name: TName;
7
+ };
8
+ }
9
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/definition/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAQ,MAAM,WAAW,CAAC;AAEjD,qBAAa,cAAc,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC7E,SAAgB,IAAI,SAAa;IAE1B,MAAM;;;;CAMd"}
@@ -0,0 +1,11 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ export class ViewDefinition extends DefinitionNode {
3
+ kind = Kind.VIEW;
4
+ toJSON() {
5
+ return {
6
+ kind: this.kind,
7
+ name: this.name,
8
+ };
9
+ }
10
+ }
11
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/definition/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,cAAqC,SAAQ,cAAqB;IAC7D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAE1B,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SACP,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { SQLNode } from "../sql/index.js";
2
+ export interface ValueEncoder<TIn, TOut = TIn> {
3
+ encode(value: TIn): TOut | SQLNode;
4
+ }
5
+ export interface ValueDecoder<TIn, TOut = TIn> {
6
+ decode(value: TIn): TOut;
7
+ }
8
+ export interface ValueCodec<TIn, TOut = TIn> extends ValueEncoder<TIn, TOut>, ValueDecoder<TOut, TIn> {
9
+ }
10
+ export declare const DEFAULT_ENCODER: ValueEncoder<unknown>;
11
+ export declare const DEFAULT_DECODER: ValueDecoder<unknown>;
12
+ export declare const DEFAULT_CODEC: ValueCodec<unknown>;
13
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/driver/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG;IAC3C,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG;IAC3C,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,CACzC,SAAQ,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;CAAG;AAE7D,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,CAIjD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,CAIjD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,OAAO,CAG7C,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const DEFAULT_ENCODER = {
2
+ encode(value) {
3
+ return value;
4
+ },
5
+ };
6
+ export const DEFAULT_DECODER = {
7
+ decode(value) {
8
+ return value;
9
+ },
10
+ };
11
+ export const DEFAULT_CODEC = {
12
+ ...DEFAULT_ENCODER,
13
+ ...DEFAULT_DECODER,
14
+ };
15
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/driver/codec.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD,MAAM,CAAC,KAAc;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD,MAAM,CAAC,KAAc;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD,GAAG,eAAe;IAClB,GAAG,eAAe;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DEFAULT_CODEC, DEFAULT_DECODER, DEFAULT_ENCODER, type ValueEncoder, type ValueDecoder, type ValueCodec, } from "./codec.js";
2
+ export type { Session, TransactionSession } from "./session.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_CODEC, DEFAULT_DECODER, DEFAULT_ENCODER, } from "./codec.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,GAIhB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { SQLStatement } from "../sql/nodes.js";
2
+ /**
3
+ * Defines the Session interface for executing SQL queries and managing transactions.
4
+ *
5
+ * This interface abstracts the underlying driver connection and provides methods
6
+ * for executing queries and handling transactions.
7
+ */
8
+ export interface Session {
9
+ execute<T = unknown>(query: SQLStatement): Promise<T[]>;
10
+ beginTransaction?(): Promise<TransactionSession>;
11
+ }
12
+ /**
13
+ * Defines the TransactionSession interface, which extends the Session interface with
14
+ * additional methods for committing and rolling back transactions.
15
+ *
16
+ * This interface is used when a transaction is active, allowing the caller to
17
+ * manage the transaction lifecycle explicitly.
18
+ */
19
+ export interface TransactionSession extends Session {
20
+ commit(): Promise<void>;
21
+ rollback(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/driver/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;GAKG;AAEH,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD,gBAAgB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClD;AAED;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/driver/session.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { TypedObject } from "../types/object.js";
2
+ import { ColumnConfig, ColumnDefinition } from "../definition/column.js";
3
+ import { SQLContext, SQLNode, SQLStatement } from "../sql/index.js";
4
+ import { AnyTable } from "./table.js";
5
+ export type AnyColumn = Column<AnyTable, string, ColumnConfig>;
6
+ export declare class Column<TTable extends AnyTable, TName extends string, TConfig extends ColumnConfig> implements SQLNode, TypedObject<TConfig> {
7
+ readonly __type: TConfig;
8
+ readonly table: TTable;
9
+ readonly name: TName;
10
+ readonly notNull: TConfig["notNull"];
11
+ readonly primaryKey: TConfig["primaryKey"];
12
+ readonly unique: TConfig["unique"];
13
+ constructor(table: TTable, definition: ColumnDefinition<TName, TConfig>);
14
+ resolve(value: unknown): TConfig["valueType"];
15
+ toSQL(ctx: SQLContext): SQLStatement;
16
+ }
17
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/execution/column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAO,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAE/D,qBAAa,MAAM,CAAC,MAAM,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,YAAY,CAC7F,YAAW,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;IAExC,SAAiB,MAAM,EAAE,OAAO,CAAC;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEvB,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAQhE,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAKpD,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY;CAGrC"}
@@ -0,0 +1,23 @@
1
+ import { sql } from "../sql/index.js";
2
+ export class Column {
3
+ table;
4
+ name;
5
+ notNull;
6
+ primaryKey;
7
+ unique;
8
+ constructor(table, definition) {
9
+ this.table = table;
10
+ this.name = definition.name;
11
+ this.notNull = definition["_notNull"];
12
+ this.primaryKey = definition["_primaryKey"];
13
+ this.unique = definition["_unique"];
14
+ }
15
+ resolve(value) {
16
+ // In a real implementation, this would include type checking and conversion logic
17
+ return value;
18
+ }
19
+ toSQL(ctx) {
20
+ return sql.join([sql.identifier(this.table.name), sql.identifier(this.name)], ".").toSQL(ctx);
21
+ }
22
+ }
23
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/execution/column.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAKzE,MAAM,OAAO,MAAM;IAKR,KAAK,CAAS;IACd,IAAI,CAAQ;IACZ,OAAO,CAAqB;IAC5B,UAAU,CAAwB;IAClC,MAAM,CAAoB;IAEnC,YAAY,KAAa,EAAE,UAA4C;QACrE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAEM,OAAO,CAAC,KAAc;QAC3B,kFAAkF;QAClF,OAAO,KAA6B,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,GAAe;QACnB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { QueryDialect } from "./dialect.js";
2
+ import { OperationFactory } from "./operation.js";
3
+ import { SchemaRegistry } from "./schema.js";
4
+ import { Session } from "../driver/session.js";
5
+ import { DefinitionNode } from "../definition/base.js";
6
+ import { Schema } from "./types.js";
7
+ export interface ExecutionContextOptions<TSchema extends Record<string, DefinitionNode> = Record<string, DefinitionNode>> {
8
+ session: Session;
9
+ dialect: QueryDialect;
10
+ schema: SchemaRegistry<TSchema>;
11
+ }
12
+ export declare class ExecutionContext<TSchema extends Record<string, DefinitionNode> = Record<string, DefinitionNode>> {
13
+ readonly dialect: QueryDialect;
14
+ readonly operations: OperationFactory<Schema<TSchema>>;
15
+ readonly schema: SchemaRegistry<TSchema>;
16
+ readonly session: Session;
17
+ constructor(options: ExecutionContextOptions<TSchema>);
18
+ }
19
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/execution/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,uBAAuB,CACtC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAE/E,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,gBAAgB,CAC3B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAE/E,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC;CAMtD"}
@@ -0,0 +1,14 @@
1
+ import { OperationFactory } from "./operation.js";
2
+ export class ExecutionContext {
3
+ dialect;
4
+ operations;
5
+ schema;
6
+ session;
7
+ constructor(options) {
8
+ this.session = options.session;
9
+ this.dialect = options.dialect;
10
+ this.schema = options.schema;
11
+ this.operations = new OperationFactory(this);
12
+ }
13
+ }
14
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/execution/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAclD,MAAM,OAAO,gBAAgB;IAGlB,OAAO,CAAe;IACtB,UAAU,CAAoC;IAC9C,MAAM,CAA0B;IAChC,OAAO,CAAU;IAE1B,YAAY,OAAyC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAkB,IAAI,CAAC,CAAC;IAChE,CAAC;CACF"}
@@ -0,0 +1,75 @@
1
+ import { SQLIdentifier, SQLNode, SQLQuery } from "../sql/nodes.js";
2
+ export interface JoinParams {
3
+ alias: string;
4
+ type: "one" | "many";
5
+ from: SQLNode;
6
+ to: SQLNode;
7
+ params: SelectParams;
8
+ }
9
+ export interface SelectParams {
10
+ table: SQLIdentifier;
11
+ select: SQLNode[];
12
+ where?: SQLNode;
13
+ order?: SQLNode[];
14
+ limit?: number;
15
+ offset?: number;
16
+ distinct?: boolean;
17
+ join?: JoinParams[];
18
+ }
19
+ export interface InsertParams {
20
+ table: SQLIdentifier;
21
+ columns: SQLNode[];
22
+ values: SQLNode[][];
23
+ return?: SQLNode[];
24
+ }
25
+ export interface UpdateParams {
26
+ table: SQLIdentifier;
27
+ set: [column: SQLNode, value: SQLNode][];
28
+ where?: SQLNode;
29
+ return?: SQLNode[];
30
+ }
31
+ export interface DeleteParams {
32
+ table: SQLIdentifier;
33
+ where?: SQLNode;
34
+ return?: SQLNode[];
35
+ }
36
+ export declare class QueryDialect {
37
+ private _getSelection;
38
+ /**
39
+ * @example
40
+ * Given a `tasks` table with a relation to an `assignee` in the `users` table, the following join definition:
41
+ * ```ts
42
+ * const join: JoinParams = {
43
+ * alias: "assignee",
44
+ * type: "one",
45
+ * from: sql`${tasks.assigneeId}`,
46
+ * to: sql`${users.id}`,
47
+ * params: {
48
+ * table: users,
49
+ * select: [users.id, users.name, users.email],
50
+ * where: sql`${users.id} = ${tasks.assigneeId}`,
51
+ * },
52
+ * }
53
+ * ```
54
+ * would produce the following SQL:
55
+ *
56
+ * ```sql
57
+ * SELECT "id", "title", "description", "__rel_assignee"."data" AS "assignee" FROM "tasks"
58
+ * LEFT JOIN LATERAL (
59
+ * SELECT row_to_json("__t".*) AS "data"
60
+ * FROM (
61
+ * SELECT "id", "name", "email"
62
+ * FROM "users"
63
+ * WHERE "users"."id" = "tasks"."assignee_id"
64
+ * ) AS "__t"
65
+ * ) AS "__rel_assignee"
66
+ * ON true
67
+ * ```
68
+ **/
69
+ private _buildLateralJoin;
70
+ buildSelectQuery(params: SelectParams): SQLQuery;
71
+ buildInsertQuery(params: InsertParams): SQLQuery;
72
+ buildUpdateQuery(params: UpdateParams): SQLQuery<unknown>;
73
+ buildDeleteQuery(params: DeleteParams): SQLQuery<unknown>;
74
+ }
75
+ //# sourceMappingURL=dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../src/execution/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGnE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa;IAiBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8BI;IACJ,OAAO,CAAC,iBAAiB;IAmBzB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ;IAsChD,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ;IAehD,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAmBrC,gBAAgB,CAAC,MAAM,EAAE,YAAY;CAetC"}
@@ -0,0 +1,123 @@
1
+ import { sql } from "../sql/tag.js";
2
+ export class QueryDialect {
3
+ _getSelection(columns, joinFields) {
4
+ const selection = [...columns];
5
+ if (columns.length === 0 && joinFields.length === 0) {
6
+ return sql `*`;
7
+ }
8
+ for (const field of joinFields) {
9
+ const alias = sql.identifier(`__join_${field}`);
10
+ const node = sql `${alias}.${sql.identifier("data")} AS ${sql.identifier(field)}`;
11
+ selection.push(node);
12
+ }
13
+ return sql.join(selection, ", ");
14
+ }
15
+ /**
16
+ * @example
17
+ * Given a `tasks` table with a relation to an `assignee` in the `users` table, the following join definition:
18
+ * ```ts
19
+ * const join: JoinParams = {
20
+ * alias: "assignee",
21
+ * type: "one",
22
+ * from: sql`${tasks.assigneeId}`,
23
+ * to: sql`${users.id}`,
24
+ * params: {
25
+ * table: users,
26
+ * select: [users.id, users.name, users.email],
27
+ * where: sql`${users.id} = ${tasks.assigneeId}`,
28
+ * },
29
+ * }
30
+ * ```
31
+ * would produce the following SQL:
32
+ *
33
+ * ```sql
34
+ * SELECT "id", "title", "description", "__rel_assignee"."data" AS "assignee" FROM "tasks"
35
+ * LEFT JOIN LATERAL (
36
+ * SELECT row_to_json("__t".*) AS "data"
37
+ * FROM (
38
+ * SELECT "id", "name", "email"
39
+ * FROM "users"
40
+ * WHERE "users"."id" = "tasks"."assignee_id"
41
+ * ) AS "__t"
42
+ * ) AS "__rel_assignee"
43
+ * ON true
44
+ * ```
45
+ **/
46
+ _buildLateralJoin(join) {
47
+ const alias = sql.identifier(`__join_${join.alias}`);
48
+ const innerAlias = sql.identifier(`__t`);
49
+ const innerQuery = this.buildSelectQuery(join.params);
50
+ const subquery = sql `SELECT`;
51
+ if (join.type === "many") {
52
+ subquery.append(sql ` COALESCE(json_agg(row_to_json(${innerAlias}.*)), '[]'::json)`);
53
+ }
54
+ else {
55
+ subquery.append(sql ` row_to_json(${innerAlias}.*)`);
56
+ }
57
+ subquery.append(sql ` AS ${sql.identifier("data")} FROM (${innerQuery}) AS ${innerAlias}`);
58
+ return sql `LEFT JOIN LATERAL (${subquery}) AS ${alias} ON true`;
59
+ }
60
+ buildSelectQuery(params) {
61
+ const { table, select, distinct, where, order, limit, offset, join } = params;
62
+ const query = sql `SELECT`;
63
+ if (distinct) {
64
+ query.append(sql ` DISTINCT`);
65
+ }
66
+ const selection = this._getSelection(select, join?.map(({ alias }) => alias) ?? []);
67
+ query.append(sql ` ${selection} FROM ${table}`);
68
+ if (join) {
69
+ for (const joinEntry of join) {
70
+ const joinNode = this._buildLateralJoin(joinEntry);
71
+ query.append(sql ` ${joinNode}`);
72
+ }
73
+ }
74
+ if (where) {
75
+ query.append(sql ` WHERE ${where}`);
76
+ }
77
+ if (order && order.length > 0) {
78
+ query.append(sql ` ORDER BY ${sql.join(order, ", ")}`);
79
+ }
80
+ if (limit !== undefined) {
81
+ query.append(sql ` LIMIT ${sql.param(limit)}`);
82
+ }
83
+ if (offset !== undefined) {
84
+ query.append(sql ` OFFSET ${sql.param(offset)}`);
85
+ }
86
+ return query;
87
+ }
88
+ buildInsertQuery(params) {
89
+ const { table, columns, values, return: returning } = params;
90
+ const query = sql `INSERT INTO ${table} (${sql.join(columns, ", ")})`;
91
+ const rows = values.map((row) => sql.wrap(sql.join(row, ", ")));
92
+ query.append(sql ` VALUES ${sql.join(rows, ", ")}`);
93
+ if (returning) {
94
+ query.append(sql ` RETURNING ${sql.join(returning, ", ")}`);
95
+ }
96
+ return query;
97
+ }
98
+ buildUpdateQuery(params) {
99
+ const { table, set, where, return: returning } = params;
100
+ const query = sql `UPDATE ${table}`;
101
+ const sets = set.map(([col, val]) => sql `${col} = ${val}`);
102
+ query.append(sql ` SET ${sql.join(sets, ", ")}`);
103
+ if (where) {
104
+ query.append(sql ` WHERE ${where}`);
105
+ }
106
+ if (returning) {
107
+ query.append(sql ` RETURNING ${sql.join(returning, ", ")}`);
108
+ }
109
+ return query;
110
+ }
111
+ buildDeleteQuery(params) {
112
+ const { table, where, return: returning } = params;
113
+ const query = sql `DELETE FROM ${table}`;
114
+ if (where) {
115
+ query.append(sql ` WHERE ${where}`);
116
+ }
117
+ if (returning) {
118
+ query.append(sql ` RETURNING ${sql.join(returning, ", ")}`);
119
+ }
120
+ return query;
121
+ }
122
+ }
123
+ //# sourceMappingURL=dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../src/execution/dialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAyCpC,MAAM,OAAO,YAAY;IACf,aAAa,CAAC,OAAkB,EAAE,UAAoB;QAC5D,MAAM,SAAS,GAAc,CAAC,GAAG,OAAO,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,CAAA,GAAG,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,GAAG,CAAA,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAEjF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8BI;IACI,iBAAiB,CAAC,IAAgB;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAErD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,GAAG,CAAA,QAAQ,CAAC;QAE7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAA,kCAAkC,UAAU,mBAAmB,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAA,gBAAgB,UAAU,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAA,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,UAAU,QAAQ,UAAU,EAAE,CAAC,CAAC;QAE1F,OAAO,GAAG,CAAA,sBAAsB,QAAQ,QAAQ,KAAK,UAAU,CAAC;IAClE,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAE9E,MAAM,KAAK,GAAG,GAAG,CAAA,QAAQ,CAAC;QAE1B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,IAAI,SAAS,SAAS,KAAK,EAAE,CAAC,CAAC;QAE/C,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACnD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,IAAI,QAAQ,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,UAAU,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,WAAW,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE7D,MAAM,KAAK,GAAG,GAAG,CAAA,eAAe,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;QAErE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAExD,MAAM,KAAK,GAAG,GAAG,CAAA,UAAU,KAAK,EAAE,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,UAAU,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEnD,MAAM,KAAK,GAAG,GAAG,CAAA,eAAe,KAAK,EAAE,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,UAAU,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export { Column, type AnyColumn } from "./column.js";
2
+ export { ExecutionContext, type ExecutionContextOptions } from "./context.js";
3
+ export { QueryDialect, type InsertParams, type SelectParams, type DeleteParams, type UpdateParams, type JoinParams, } from "./dialect.js";
4
+ export { OperationFactory, type DeleteArgs, type DeleteOperation, type FieldSelection, type InsertArgs, type InsertOperation, type Operation, type SelectArgs, type SelectOperation, type UpdateArgs, type UpdateOperation, type FilterCondition, type InsertRecordOf, type UpdateRecordOf, type OperationType, type OrderDirection, type ColumnSelectionOf, type ColumnValueOf, type OperationResult, type SelectResult, type JoinExpressionOf, type OperationMode, type OrderByExpressionOf, type RelationTargetTable, type SelectionOf, type WhereExpressionOf, } from "./operation.js";
5
+ export { SchemaRegistry, type TableNameOf, type FieldRelationOf, type RelationDefinitionsOf, type TableRelationsFields, } from "./schema.js";
6
+ export { Table, type AnyTable, type ColumnNamesOf, type ColumsOf, type RecordOf, type SchemaNameOf, type WithRelations, } from "./table.js";
7
+ export type { Schema, TableByName, AnySchema, CreateParams, CreateRecordOf, RelationNameOf, SchemaRelations, SchemaRelationsOf, SchemaTables, SelectColumnsOf, TableRelations, } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { Column } from "./column.js";
2
+ export { ExecutionContext } from "./context.js";
3
+ export { QueryDialect, } from "./dialect.js";
4
+ export { OperationFactory, } from "./operation.js";
5
+ export { SchemaRegistry, } from "./schema.js";
6
+ export { Table, } from "./table.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,YAAY,GAMb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,GA0BjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,GAKf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,GAON,MAAM,YAAY,CAAC"}