@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,48 @@
1
+ import { SQLParam, SQLQuery, SQLRaw } from "../sql/nodes.js";
2
+ import { defaultCodec, DefinitionNode, Kind } from "./base.js";
3
+ import { CheckConstraintDefinition } from "./constraint.js";
4
+ export class DomainDefinition extends DefinitionNode {
5
+ kind = Kind.DOMAIN;
6
+ _dataType;
7
+ _notNull;
8
+ _defaultValue;
9
+ _check;
10
+ _codec;
11
+ constructor(name, config) {
12
+ super(name);
13
+ this._dataType = config.dataType ?? "text";
14
+ this._notNull = config.notNull ?? false;
15
+ this._codec = config.codec ?? defaultCodec;
16
+ }
17
+ notNull() {
18
+ this._notNull = true;
19
+ return this;
20
+ }
21
+ default(value) {
22
+ this._defaultValue = new SQLParam(value, this._codec.encode);
23
+ return this;
24
+ }
25
+ check(cb, name) {
26
+ const expression = new SQLQuery(cb(new SQLRaw("VALUE")));
27
+ this._check = new CheckConstraintDefinition(name ?? `${this.name}_check`, {
28
+ expression,
29
+ });
30
+ return this;
31
+ }
32
+ $type() {
33
+ return this;
34
+ }
35
+ toJSON() {
36
+ return {
37
+ kind: this.kind,
38
+ name: this.name,
39
+ dataType: this._dataType,
40
+ notNull: this._notNull,
41
+ defaultValue: this._defaultValue
42
+ ? new SQLQuery(this._defaultValue).toQuery({ inlineParams: true }).text
43
+ : undefined,
44
+ check: this._check?.toJSON(),
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/definition/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAe,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAgC,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAa1F,MAAM,OAAO,gBAGX,SAAQ,cAA8B;IAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAIlB,SAAS,CAAsB;IAC/B,QAAQ,CAAqB;IAC7B,aAAa,CAAW;IACxB,MAAM,CAAgC;IAEtC,MAAM,CAAsE;IAEtF,YAAY,IAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;IAC7C,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAqB,CAAC;IAC/B,CAAC;IAEM,OAAO,CAAC,KAAkC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,IAAwB,CAAC;IAClC,CAAC;IAEM,KAAK,CAAmB,EAA+B,EAAE,IAAQ;QACtE,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,QAAQ,EAAE;YACxE,UAAU;SACX,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,OAAO,IAA8B,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,YAAY,EAAE,IAAI,CAAC,aAAa;gBAC9B,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;gBACvE,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;SACpB,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { DefinitionNode, NodeRef, Kind, Relation, defaultCodec, type NodeKind, type RelationType, type ColumnCodec, type DefinitionSchema, } from "./base.js";
2
+ export { ColumnDefinition, type ColumnConfig, type AnyColumnDefinition, type UpdateGuard, } from "./column.js";
3
+ export { DomainDefinition, type DomainConfig, type AnyDomainDefinition } from "./domain.js";
4
+ export { IndexDefinition, IndexColumnDefinition, type IndexConfig, type AnyIndexDefinition, type ColumnConfigRefs, type ColumnConfigType, } from "./indexes.js";
5
+ export { NamespaceDefinition, type AnyNamespaceDefinition } from "./namespace.js";
6
+ export { SequenceDefinition } from "./sequence.js";
7
+ export { TableDefinition, type TableConfig, type AnyTableDefinition, type ColumnRefs, } from "./table.js";
8
+ export { ViewDefinition } from "./view.js";
9
+ export { CheckConstraintDefinition, PrimaryKeyConstraintDefinition, UniqueConstraintDefinition, type AnyConstraintDefinition, type AnyCheckConstraintDefinition, type AnyUniqueConstraintDefinition, type AnyPrimaryKeyConstraintDefinition, type CheckConstraintConfig, type UniqueConstraintConfig, type PrimaryKeyConstraintConfig, } from "./constraint.js";
10
+ export { RelationsDefinition, type RelationsConfig, type AnyFieldRelation, type AnyRelationDefinition, type AnyTableRelations, type FieldRelation, } from "./relations.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { DefinitionNode, NodeRef, Kind, Relation, defaultCodec, } from "./base.js";
2
+ export { ColumnDefinition, } from "./column.js";
3
+ export { DomainDefinition } from "./domain.js";
4
+ export { IndexDefinition, IndexColumnDefinition, } from "./indexes.js";
5
+ export { NamespaceDefinition } from "./namespace.js";
6
+ export { SequenceDefinition } from "./sequence.js";
7
+ export { TableDefinition, } from "./table.js";
8
+ export { ViewDefinition } from "./view.js";
9
+ export { CheckConstraintDefinition, PrimaryKeyConstraintDefinition, UniqueConstraintDefinition, } from "./constraint.js";
10
+ export { RelationsDefinition, } from "./relations.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,YAAY,GAKb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,GAIjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAA+C,MAAM,aAAa,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,qBAAqB,GAKtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAA+B,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,eAAe,GAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,GAQ3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,GAMpB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { Unique } from "../utils/index.js";
2
+ import { DefinitionNode, NodeRef } from "./base.js";
3
+ import { AnyColumnDefinition } from "./column.js";
4
+ import { AnyTableDefinition, ColumnRefs } from "./table.js";
5
+ export interface IndexConfig {
6
+ unique?: boolean;
7
+ table: AnyTableDefinition;
8
+ }
9
+ export type AnyIndexDefinition = IndexDefinition<any, any>;
10
+ export type ColumnConfigRefs<TIndexName extends string, TTable extends AnyTableDefinition> = Readonly<{
11
+ readonly [K in keyof TTable["columns"]]: IndexColumnDefinition<TIndexName, TTable["columns"][K]>;
12
+ }>;
13
+ export type ColumnConfigType<TIndexName extends string, TTable extends AnyTableDefinition> = ColumnConfigRefs<TIndexName, TTable>[keyof TTable["columns"]];
14
+ export declare class IndexDefinition<TName extends string, TTable extends AnyTableDefinition> extends DefinitionNode<TName, IndexConfig> {
15
+ readonly kind: "INDEX";
16
+ protected _table: TTable;
17
+ protected _unique: boolean;
18
+ protected _columns: ColumnConfigType<TName, TTable>[];
19
+ protected _include?: ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][];
20
+ protected _distinctNulls?: boolean;
21
+ constructor(name: TName, config: IndexConfig);
22
+ private _getColumnConfigRefs;
23
+ unique(): Unique<this>;
24
+ columns(cb: (columns: ColumnConfigRefs<TName, TTable>) => ColumnConfigType<TName, TTable>[]): this;
25
+ include(cb: (columns: ColumnRefs<TTable["columns"]>) => ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][]): this;
26
+ /**
27
+ * Set nulls distinct behavior for the index.
28
+ * `NULLS [NOT] DISTINCT` specifies whether NULL values are treated as distinct for the purposes of index uniqueness.
29
+ * @default
30
+ */
31
+ distinctNulls(distinct?: boolean): this;
32
+ toJSON(): {
33
+ readonly kind: "INDEX";
34
+ readonly name: TName;
35
+ readonly unique: boolean;
36
+ readonly distinctNulls: boolean | undefined;
37
+ readonly columns: {
38
+ readonly kind: "INDEX_COLUMN";
39
+ readonly name: `${TName}_column_${TTable["columns"][keyof TTable["columns"]]["name"]}`;
40
+ readonly sortDirection: "ASC" | "DESC";
41
+ readonly nulls: "FIRST" | "LAST";
42
+ readonly column: TTable["columns"][keyof TTable["columns"]]["name"];
43
+ }[];
44
+ readonly include: TTable["columns"][keyof TTable["columns"]]["name"][] | null;
45
+ };
46
+ }
47
+ export declare class IndexColumnDefinition<TIdxName extends string, TColumn extends AnyColumnDefinition> extends DefinitionNode<`${TIdxName}_column_${TColumn["name"]}`> {
48
+ readonly kind: "INDEX_COLUMN";
49
+ protected _column: NodeRef<TColumn>;
50
+ protected _sortDirection: "ASC" | "DESC";
51
+ protected _nulls: "FIRST" | "LAST";
52
+ constructor(index: TIdxName, column: TColumn);
53
+ sort(direction?: "ASC" | "DESC"): this;
54
+ nullsFirst(): this;
55
+ nullsLast(): this;
56
+ toJSON(): {
57
+ readonly kind: "INDEX_COLUMN";
58
+ readonly name: `${TIdxName}_column_${TColumn["name"]}`;
59
+ readonly sortDirection: "ASC" | "DESC";
60
+ readonly nulls: "FIRST" | "LAST";
61
+ readonly column: TColumn["name"];
62
+ };
63
+ }
64
+ //# sourceMappingURL=indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../src/definition/indexes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { DefinitionNode, Kind, NodeRef } from "./base.js";
2
+ export class IndexDefinition extends DefinitionNode {
3
+ kind = Kind.INDEX;
4
+ _table;
5
+ _unique;
6
+ _columns = [];
7
+ _include;
8
+ _distinctNulls;
9
+ constructor(name, config) {
10
+ super(name);
11
+ this._table = config.table;
12
+ this._unique = config.unique ?? false;
13
+ this._distinctNulls = true;
14
+ }
15
+ _getColumnConfigRefs() {
16
+ return Object.fromEntries(Object.entries(this._table.columns).map(([field, column]) => [
17
+ field,
18
+ new IndexColumnDefinition(this.name, column),
19
+ ]));
20
+ }
21
+ unique() {
22
+ this._unique = true;
23
+ return this;
24
+ }
25
+ columns(cb) {
26
+ this._columns = cb(this._getColumnConfigRefs());
27
+ return this;
28
+ }
29
+ include(cb) {
30
+ this._include = cb(this._table._getColumnRefs());
31
+ return this;
32
+ }
33
+ /**
34
+ * Set nulls distinct behavior for the index.
35
+ * `NULLS [NOT] DISTINCT` specifies whether NULL values are treated as distinct for the purposes of index uniqueness.
36
+ * @default
37
+ */
38
+ distinctNulls(distinct = true) {
39
+ this._distinctNulls = distinct;
40
+ return this;
41
+ }
42
+ toJSON() {
43
+ return {
44
+ kind: this.kind,
45
+ name: this.name,
46
+ unique: this._unique,
47
+ distinctNulls: this._distinctNulls,
48
+ columns: this._columns.map((col) => col.toJSON()),
49
+ include: this._include ? this._include.map((col) => col.toJSON()) : null,
50
+ };
51
+ }
52
+ }
53
+ export class IndexColumnDefinition extends DefinitionNode {
54
+ kind = Kind.INDEX_COLUMN;
55
+ _column;
56
+ _sortDirection = "ASC";
57
+ _nulls = "LAST";
58
+ constructor(index, column) {
59
+ super(`${index}_column_${column.name}`);
60
+ this._column = new NodeRef(column);
61
+ }
62
+ sort(direction = "ASC") {
63
+ this._sortDirection = direction;
64
+ return this;
65
+ }
66
+ nullsFirst() {
67
+ this._nulls = "FIRST";
68
+ return this;
69
+ }
70
+ nullsLast() {
71
+ this._nulls = "LAST";
72
+ return this;
73
+ }
74
+ toJSON() {
75
+ return {
76
+ kind: this.kind,
77
+ name: this.name,
78
+ sortDirection: this._sortDirection,
79
+ nulls: this._nulls,
80
+ column: this._column.toJSON(),
81
+ };
82
+ }
83
+ }
84
+ //# sourceMappingURL=indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/definition/indexes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { WithNamespace } from "../utils/index.js";
2
+ import { DefinitionNode } from "./base.js";
3
+ import { AnyColumnDefinition } from "./column.js";
4
+ import { TableDefinition } from "./table.js";
5
+ export type AnyNamespaceDefinition = NamespaceDefinition<any>;
6
+ export declare class NamespaceDefinition<TName extends string> extends DefinitionNode<TName> {
7
+ readonly kind: "SCHEMA";
8
+ table<TName extends string, TColumns extends Record<string, AnyColumnDefinition>>(name: TName, columns: TColumns): WithNamespace<TableDefinition<TName, TColumns, this>, this>;
9
+ toJSON(): {
10
+ readonly kind: "SCHEMA";
11
+ readonly name: TName;
12
+ };
13
+ }
14
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/definition/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAQ,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAE9D,qBAAa,mBAAmB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,cAAc,CAAC,KAAK,CAAC;IAClF,SAAgB,IAAI,WAAe;IAE5B,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACrF,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,GAChB,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAOvD,MAAM;;;;CAMd"}
@@ -0,0 +1,15 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ import { TableDefinition } from "./table.js";
3
+ export class NamespaceDefinition extends DefinitionNode {
4
+ kind = Kind.SCHEMA;
5
+ table(name, columns) {
6
+ return new TableDefinition(name, { columns, schema: this });
7
+ }
8
+ toJSON() {
9
+ return {
10
+ kind: this.kind,
11
+ name: this.name,
12
+ };
13
+ }
14
+ }
15
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/definition/namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,OAAO,mBAA0C,SAAQ,cAAqB;IAClE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAE5B,KAAK,CACV,IAAW,EACX,OAAiB;QAEjB,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAGzD,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SACP,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ import { DefinitionNode, RelationType } from "./base.js";
2
+ import { AnyTableDefinition } from "./table.js";
3
+ export type TableDefinitionColumn<TTable extends AnyTableDefinition> = {
4
+ [K in keyof TTable["__type"]["columns"]]: TTable["__type"]["columns"][K];
5
+ }[keyof TTable["__type"]["columns"]];
6
+ export interface FieldRelation<TSource extends AnyTableDefinition, TTarget extends AnyTableDefinition = AnyTableDefinition, TType extends RelationType = RelationType> {
7
+ target: TTarget;
8
+ type: TType;
9
+ from: TSource extends AnyTableDefinition ? TableDefinitionColumn<TSource>[] : never;
10
+ to: TTarget extends AnyTableDefinition ? TableDefinitionColumn<TTarget>[] : never;
11
+ }
12
+ export interface RelationsConfig<TTable extends AnyTableDefinition = AnyTableDefinition> {
13
+ table: TTable;
14
+ relations: Record<string, FieldRelation<TTable, AnyTableDefinition, RelationType>>;
15
+ }
16
+ export type AnyFieldRelation = FieldRelation<AnyTableDefinition, AnyTableDefinition, RelationType>;
17
+ export type AnyTableRelations = Record<string, AnyFieldRelation>;
18
+ export type AnyRelationDefinition = RelationsDefinition<AnyTableDefinition, AnyTableRelations>;
19
+ export declare class RelationsDefinition<TTable extends AnyTableDefinition, TRelations extends Record<string, FieldRelation<TTable, AnyTableDefinition, RelationType>>> extends DefinitionNode<`${TTable["name"]}_relations`, {
20
+ table: TTable;
21
+ relations: TRelations;
22
+ }> {
23
+ readonly kind: "RELATIONS";
24
+ readonly table: TTable;
25
+ readonly relations: TRelations;
26
+ constructor(table: TTable, relations: TRelations);
27
+ toJSON(): {
28
+ readonly kind: "RELATIONS";
29
+ readonly name: `${TTable["name"]}_relations`;
30
+ readonly table: {
31
+ readonly kind: "TABLE";
32
+ readonly name: any;
33
+ };
34
+ readonly relations: {
35
+ [k: string]: {
36
+ readonly type: RelationType;
37
+ readonly target: {
38
+ readonly kind: "TABLE";
39
+ readonly name: any;
40
+ };
41
+ readonly from: {
42
+ kind: any;
43
+ name: any;
44
+ }[];
45
+ readonly to: {
46
+ kind: any;
47
+ name: any;
48
+ }[];
49
+ };
50
+ };
51
+ };
52
+ }
53
+ //# sourceMappingURL=relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/definition/relations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAQ,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,qBAAqB,CAAC,MAAM,SAAS,kBAAkB,IAAI;KACpE,CAAC,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACzE,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAErC,MAAM,WAAW,aAAa,CAC5B,OAAO,SAAS,kBAAkB,EAClC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,KAAK,SAAS,YAAY,GAAG,YAAY;IAEzC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,OAAO,SAAS,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC;IACpF,EAAE,EAAE,OAAO,SAAS,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC;CACnF;AAED,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;CACpF;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACnG,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAE/F,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,kBAAkB,EACjC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAC1F,SAAQ,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,CAAC;IAC/F,SAAgB,IAAI,cAAkB;IAEtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;gBAEnB,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;IAOzC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bd"}
@@ -0,0 +1,40 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ export class RelationsDefinition extends DefinitionNode {
3
+ kind = Kind.RELATIONS;
4
+ table;
5
+ relations;
6
+ constructor(table, relations) {
7
+ super(`${table.name}_relations`);
8
+ this.table = table;
9
+ this.relations = relations;
10
+ }
11
+ toJSON() {
12
+ return {
13
+ kind: this.kind,
14
+ name: this.name,
15
+ table: {
16
+ kind: this.table.kind,
17
+ name: this.table.name,
18
+ },
19
+ relations: Object.fromEntries(Object.entries(this.relations).map(([name, relation]) => [
20
+ name,
21
+ {
22
+ type: relation.type,
23
+ target: {
24
+ kind: relation.target.kind,
25
+ name: relation.target.name,
26
+ },
27
+ from: relation.from.map((col) => ({
28
+ kind: col.kind,
29
+ name: col.name,
30
+ })),
31
+ to: relation.to.map((col) => ({
32
+ kind: col.kind,
33
+ name: col.name,
34
+ })),
35
+ },
36
+ ])),
37
+ };
38
+ }
39
+ }
40
+ //# sourceMappingURL=relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/definition/relations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,WAAW,CAAC;AA2B/D,MAAM,OAAO,mBAGX,SAAQ,cAAuF;IAC/E,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAE7B,KAAK,CAAS;IACd,SAAS,CAAa;IAE/B,YAAY,KAAa,EAAE,SAAqB;QAC9C,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;aACtB;YACD,SAAS,EAAE,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACvD,IAAI;gBACJ;oBACE,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;wBAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;qBAC3B;oBACD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf,CAAC,CAAC;oBACH,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf,CAAC,CAAC;iBACK;aACX,CAAC,CACH;SACO,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import { WithSchema } from "../utils/index.js";
2
+ import { DefinitionNode } from "./base.js";
3
+ import { AnyColumnDefinition } from "./column.js";
4
+ import { TableDefinition } from "./table.js";
5
+ export type AnySchemaDefinition = SchemaDefinition<any>;
6
+ export declare class SchemaDefinition<TName extends string> extends DefinitionNode<TName> {
7
+ readonly kind: "SCHEMA";
8
+ table<TName extends string, TColumns extends Record<string, AnyColumnDefinition>>(name: TName, columns: TColumns): WithSchema<TableDefinition<TName, TColumns, this>, this>;
9
+ toJSON(): {
10
+ readonly kind: "SCHEMA";
11
+ readonly name: TName;
12
+ };
13
+ }
14
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/definition/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAQ,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAExD,qBAAa,gBAAgB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC/E,SAAgB,IAAI,WAAe;IAE5B,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACrF,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,GAChB,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAOpD,MAAM;;;;CAMd"}
@@ -0,0 +1,15 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ import { TableDefinition } from "./table.js";
3
+ export class SchemaDefinition extends DefinitionNode {
4
+ kind = Kind.SCHEMA;
5
+ table(name, columns) {
6
+ return new TableDefinition(name, { columns, schema: this });
7
+ }
8
+ toJSON() {
9
+ return {
10
+ kind: this.kind,
11
+ name: this.name,
12
+ };
13
+ }
14
+ }
15
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/definition/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,OAAO,gBAAuC,SAAQ,cAAqB;IAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAE5B,KAAK,CACV,IAAW,EACX,OAAiB;QAEjB,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAGzD,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SACP,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import { DefinitionNode } from "./base.js";
2
+ import { SQLIdentifier } from "../sql/nodes.js";
3
+ export declare class SequenceDefinition<TName extends string> extends DefinitionNode<TName> {
4
+ readonly kind: "SEQUENCE";
5
+ protected _dataType: string;
6
+ protected _cache: number;
7
+ protected _cycle: boolean;
8
+ protected _increment: number;
9
+ protected _minValue?: number;
10
+ protected _maxValue?: number;
11
+ protected _startValue?: number;
12
+ protected _ownedBy?: SQLIdentifier;
13
+ cache(cache: number): this;
14
+ cycle(): this;
15
+ incrementBy(increment: number): this;
16
+ minValue(minValue: number): this;
17
+ maxValue(maxValue: number): this;
18
+ startWith(startValue: number): this;
19
+ toJSON(): {
20
+ readonly kind: "SEQUENCE";
21
+ readonly name: TName;
22
+ readonly dataType: string;
23
+ readonly cache: number;
24
+ readonly cycle: boolean;
25
+ readonly increment: number;
26
+ readonly minValue: number | undefined;
27
+ readonly maxValue: number | undefined;
28
+ readonly startValue: number | undefined;
29
+ readonly ownedBy: string | undefined;
30
+ };
31
+ }
32
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../src/definition/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAQ,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAC;AAE1D,qBAAa,kBAAkB,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,cAAc,CAAC,KAAK,CAAC;IACjF,SAAgB,IAAI,aAAiB;IAErC,SAAS,CAAC,SAAS,SAAY;IAC/B,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,MAAM,UAAS;IACzB,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAE5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKhC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKhC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAW1C,MAAM;;;;;;;;;;;;CAgBP"}
@@ -0,0 +1,59 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ import { SQLQuery } from "../sql/nodes.js";
3
+ export class SequenceDefinition extends DefinitionNode {
4
+ kind = Kind.SEQUENCE;
5
+ _dataType = "bigint";
6
+ _cache = 1;
7
+ _cycle = false;
8
+ _increment = 1;
9
+ _minValue;
10
+ _maxValue;
11
+ _startValue;
12
+ _ownedBy;
13
+ cache(cache) {
14
+ this._cache = cache;
15
+ return this;
16
+ }
17
+ cycle() {
18
+ this._cycle = true;
19
+ return this;
20
+ }
21
+ incrementBy(increment) {
22
+ this._increment = increment;
23
+ return this;
24
+ }
25
+ minValue(minValue) {
26
+ this._minValue = minValue;
27
+ return this;
28
+ }
29
+ maxValue(maxValue) {
30
+ this._maxValue = maxValue;
31
+ return this;
32
+ }
33
+ startWith(startValue) {
34
+ this._startValue = startValue;
35
+ return this;
36
+ }
37
+ // TBD - I need to understand how to handle it and that is the use case.
38
+ // public ownedBy(table: string, column: string): this {
39
+ // this._ownedBy = new SQLIdentifier(`${table}.${column}`);
40
+ // return this;
41
+ // }
42
+ toJSON() {
43
+ return {
44
+ kind: this.kind,
45
+ name: this.name,
46
+ dataType: this._dataType,
47
+ cache: this._cache,
48
+ cycle: this._cycle,
49
+ increment: this._increment,
50
+ minValue: this._minValue,
51
+ maxValue: this._maxValue,
52
+ startValue: this._startValue,
53
+ ownedBy: this._ownedBy
54
+ ? new SQLQuery(this._ownedBy).toQuery({ inlineParams: true }).text
55
+ : undefined,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/definition/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAiB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,OAAO,kBAAyC,SAAQ,cAAqB;IACjE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE3B,SAAS,GAAG,QAAQ,CAAC;IACrB,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;IACf,UAAU,GAAG,CAAC,CAAC;IACf,SAAS,CAAU;IACnB,SAAS,CAAU;IACnB,WAAW,CAAU;IACrB,QAAQ,CAAiB;IAE5B,KAAK,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,SAAiB;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS,CAAC,UAAkB;QACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,wDAAwD;IACxD,6DAA6D;IAC7D,iBAAiB;IACjB,IAAI;IAEJ,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACpB,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;gBAClE,CAAC,CAAC,SAAS;SACL,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,66 @@
1
+ import { SQLNode } from "../sql/nodes.js";
2
+ import { DefinitionNode, NodeRef } from "./base.js";
3
+ import { AnyColumnDefinition } from "./column.js";
4
+ import { AnyConstraintDefinition, PrimaryKeyConstraintDefinition, UniqueConstraintDefinition } from "./constraint.js";
5
+ import { AnyIndexDefinition, IndexConfig, IndexDefinition } from "./indexes.js";
6
+ import { AnyNamespaceDefinition } from "./namespace.js";
7
+ export interface TableConfig<TColumns extends Record<string, AnyColumnDefinition>, TSchema extends AnyNamespaceDefinition> {
8
+ schema?: TSchema;
9
+ columns: TColumns;
10
+ }
11
+ export type AnyTableDefinition = TableDefinition<any, any, any>;
12
+ export type ColumnRefs<TColumns extends Record<string, AnyColumnDefinition>> = {
13
+ readonly [K in keyof TColumns]: NodeRef<TColumns[K]>;
14
+ };
15
+ export declare class TableDefinition<TName extends string, TColumns extends Record<string, AnyColumnDefinition>, TSchema extends AnyNamespaceDefinition> extends DefinitionNode<TName, TableConfig<TColumns, TSchema>> {
16
+ readonly kind: "TABLE";
17
+ protected _namespace?: AnyNamespaceDefinition;
18
+ protected _indexes: AnyIndexDefinition[];
19
+ protected _constraints: AnyConstraintDefinition[];
20
+ readonly columns: Readonly<TColumns>;
21
+ constructor(name: TName, config: TableConfig<TColumns, TSchema>);
22
+ index<TIdxName extends string, TIdxConfig extends IndexConfig>(name: TIdxName, config?: Partial<Omit<TIdxConfig, "table">>): IndexDefinition<TIdxName, this>;
23
+ check(cb: (columns: ColumnRefs<this["columns"]>) => SQLNode, name?: string): this;
24
+ unique(cb: (columns: ColumnRefs<this["columns"]>) => ColumnRefs<this["columns"]>[keyof this["columns"]][]): UniqueConstraintDefinition<string, this>;
25
+ primaryKey(cb: (columns: ColumnRefs<this["columns"]>) => ColumnRefs<this["columns"]>[keyof this["columns"]][]): PrimaryKeyConstraintDefinition<string, this>;
26
+ toJSON(): {
27
+ readonly kind: "TABLE";
28
+ readonly name: TName;
29
+ readonly namespace: {
30
+ readonly kind: "SCHEMA";
31
+ readonly name: any;
32
+ } | "public";
33
+ readonly columns: any[];
34
+ readonly indexes: {
35
+ readonly kind: "INDEX";
36
+ readonly name: any;
37
+ readonly unique: boolean;
38
+ readonly distinctNulls: boolean | undefined;
39
+ readonly columns: {
40
+ readonly kind: "INDEX_COLUMN";
41
+ readonly name: `${any}_column_${any}`;
42
+ readonly sortDirection: "ASC" | "DESC";
43
+ readonly nulls: "FIRST" | "LAST";
44
+ readonly column: any;
45
+ }[];
46
+ readonly include: any[] | null;
47
+ }[];
48
+ readonly constraints: ({
49
+ kind: "CHECK_CONSTRAINT";
50
+ name: any;
51
+ expression: string;
52
+ } | {
53
+ readonly kind: "UNIQUE_CONSTRAINT";
54
+ readonly name: any;
55
+ readonly columns: any[];
56
+ readonly include: any[] | null;
57
+ readonly distinctNulls: boolean | null;
58
+ } | {
59
+ readonly kind: "PRIMARY_KEY_CONSTRAINT";
60
+ readonly name: any;
61
+ readonly columns: any[];
62
+ readonly include: any[] | null;
63
+ })[];
64
+ };
65
+ }
66
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/definition/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAQ,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,uBAAuB,EAEvB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,WAAW,CAC1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACpD,OAAO,SAAS,sBAAsB;IAEtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC;CACnB;AAGD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEhE,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI;IAC7E,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC;AAEF,qBAAa,eAAe,CAC1B,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACpD,OAAO,SAAS,sBAAsB,CACtC,SAAQ,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7D,QAAQ,CAAC,IAAI,UAAc;IAE3B,SAAS,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IAC9C,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAM;IAC9C,SAAS,CAAC,YAAY,EAAE,uBAAuB,EAAE,CAAM;IAEvD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEzB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;IAcxD,KAAK,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,WAAW,EAClE,IAAI,EAAE,QAAQ,EACd,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAM,GAC9C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC;IAO3B,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IASjF,MAAM,CACX,EAAE,EAAE,CACF,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KACjC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GACxD,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC;IAYpC,UAAU,CACf,EAAE,EAAE,CACF,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KACjC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GACxD,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC;IAaxC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUd"}