@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,9 @@
1
+ import { ExecutionContext } from "../execution/context.js";
2
+ import { SQLQuery, SQLStatement } from "../sql/nodes.js";
3
+ export declare abstract class QueryClient {
4
+ private readonly _ctx;
5
+ constructor(ctx: ExecutionContext);
6
+ $execute<T = unknown>(query: SQLStatement): Promise<T[]>;
7
+ $raw<T = unknown>(sql: SQLQuery): Promise<T[]>;
8
+ }
9
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzD,8BAAsB,WAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,GAAG,EAAE,gBAAgB;IAI3B,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIxD,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAGrD"}
@@ -0,0 +1,13 @@
1
+ export class QueryClient {
2
+ _ctx;
3
+ constructor(ctx) {
4
+ this._ctx = ctx;
5
+ }
6
+ async $execute(query) {
7
+ return this._ctx.session.execute(query);
8
+ }
9
+ async $raw(sql) {
10
+ return this.$execute(sql.toQuery());
11
+ }
12
+ }
13
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,WAAW;IACd,IAAI,CAAmB;IAExC,YAAY,GAAqB;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAc,KAAmB;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAI,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAc,GAAa;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { QueryClient } from "./base.js";
2
+ export declare class DatabaseClient extends QueryClient {
3
+ $transaction<T>(fn: (tx: QueryClient) => Promise<T>): Promise<T>;
4
+ }
5
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/client/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,qBAAa,cAAe,SAAQ,WAAW;IAE7C,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGjE"}
@@ -0,0 +1,8 @@
1
+ import { QueryClient } from "./base.js";
2
+ export class DatabaseClient extends QueryClient {
3
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ $transaction(fn) {
5
+ throw new Error("Method not implemented.");
6
+ }
7
+ }
8
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/client/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC7C,6DAA6D;IAC7D,YAAY,CAAI,EAAmC;QACjD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { TableConfig } from "../definition/table.js";
2
+ import { ExecutionContext } from "../execution/context.js";
3
+ import { ColumnNamesOf, RecordOf, Table } from "../execution/table.js";
4
+ type TableType = Table<string, TableConfig>;
5
+ export interface CreateArgs<T extends TableType> {
6
+ data: RecordOf<T>;
7
+ select?: Partial<Record<ColumnNamesOf<T>, boolean | undefined>>;
8
+ }
9
+ export type CreateResult<T extends CreateArgs<TableType>> = T["select"] extends Record<infer CName, infer CSelect> ? CSelect extends true ? {
10
+ [K in CName]: T["select"][K] extends true ? string : never;
11
+ } : never : T extends CreateArgs<infer TTable> ? RecordOf<TTable> : never;
12
+ export declare class ModelClient<TTableName extends string, TTableConfig extends TableConfig> {
13
+ private readonly _ctx;
14
+ private readonly _table;
15
+ constructor(ctx: ExecutionContext, table: Table<TTableName, TTableConfig>);
16
+ create<TArgs extends CreateArgs<Table<TTableName, TTableConfig>>>(args: TArgs): Promise<CreateResult<TArgs>>;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/client/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEvE,KAAK,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE5C,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS;IAC7C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,IACtD,CAAC,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,MAAM,KAAK,EAAE,MAAM,OAAO,CAAC,GAClD,OAAO,SAAS,IAAI,GAClB;KACG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK;CAC3D,GACD,KAAK,GACP,CAAC,SAAS,UAAU,CAAC,MAAM,MAAM,CAAC,GAChC,QAAQ,CAAC,MAAM,CAAC,GAChB,KAAK,CAAC;AAEd,qBAAa,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,YAAY,SAAS,WAAW;IAClF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAE7C,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;IAKnE,MAAM,CAAC,KAAK,SAAS,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,EACpE,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CAGhC"}
@@ -0,0 +1,12 @@
1
+ export class ModelClient {
2
+ _ctx;
3
+ _table;
4
+ constructor(ctx, table) {
5
+ this._ctx = ctx;
6
+ this._table = table;
7
+ }
8
+ async create(args) {
9
+ throw new Error("Not implemented", { cause: args });
10
+ }
11
+ }
12
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/client/model.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,WAAW;IACL,IAAI,CAAmB;IACvB,MAAM,CAAkC;IAEzD,YAAY,GAAqB,EAAE,KAAsC;QACvE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAAW;QAEX,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ import { SQLIdentifier } from "../sql/nodes.js";
2
+ import { TypedObject } from "../utils/index.js";
3
+ export declare const Kind: Readonly<{
4
+ readonly SCHEMA: "SCHEMA";
5
+ readonly TABLE: "TABLE";
6
+ readonly COLUMN: "COLUMN";
7
+ readonly INDEX: "INDEX";
8
+ readonly DOMAIN: "DOMAIN";
9
+ readonly SEQUENCE: "SEQUENCE";
10
+ readonly VIEW: "VIEW";
11
+ readonly FUNCTION: "FUNCTION";
12
+ readonly RELATIONS: "RELATIONS";
13
+ readonly INDEX_COLUMN: "INDEX_COLUMN";
14
+ readonly REFERENCE: "REFERENCE";
15
+ readonly CHECK_CONSTRAINT: "CHECK_CONSTRAINT";
16
+ readonly UNIQUE_CONSTRAINT: "UNIQUE_CONSTRAINT";
17
+ readonly PRIMARY_KEY_CONSTRAINT: "PRIMARY_KEY_CONSTRAINT";
18
+ }>;
19
+ export declare const Relation: Readonly<{
20
+ readonly HAS_ONE: "has_one";
21
+ readonly HAS_MANY: "has_many";
22
+ readonly BELONGS_TO: "belongs_to";
23
+ }>;
24
+ export type NodeKind = (typeof Kind)[keyof typeof Kind];
25
+ export type RelationType = (typeof Relation)[keyof typeof Relation];
26
+ export interface ColumnCodec<TRaw, TValue> {
27
+ encode(value: TValue): TRaw;
28
+ decode(raw: TRaw): TValue;
29
+ }
30
+ export declare const defaultCodec: ColumnCodec<unknown, unknown>;
31
+ export type DefinitionSchema = Record<string, DefinitionNode>;
32
+ export declare abstract class DefinitionNode<TName extends string = string, TConfig extends object = object> implements TypedObject<TConfig> {
33
+ abstract readonly kind: NodeKind;
34
+ readonly __type: TConfig;
35
+ readonly name: TName;
36
+ constructor(name: TName);
37
+ toJSON(): {
38
+ kind: NodeKind;
39
+ name: TName;
40
+ };
41
+ }
42
+ export declare class NodeRef<TNode extends DefinitionNode> extends SQLIdentifier implements TypedObject<TNode["__type"]> {
43
+ readonly target: TNode;
44
+ readonly kind: "REFERENCE";
45
+ readonly __type: TNode["__type"];
46
+ constructor(target: TNode);
47
+ toJSON(): TNode["name"];
48
+ }
49
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/definition/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;EAeN,CAAC;AAEZ,eAAO,MAAM,QAAQ;;;;EAIV,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,IAAI,CAAC,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAW,CAAC,IAAI,EAAE,MAAM;IACvC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAOtD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,8BAAsB,cAAc,CAClC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,OAAO,SAAS,MAAM,GAAG,MAAM,CAC/B,YAAW,WAAW,CAAC,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAEjC,SAAiB,MAAM,EAAE,OAAO,CAAC;IAEjC,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAEhB,IAAI,EAAE,KAAK;IAIhB,MAAM;;;;CAMd;AAED,qBAAa,OAAO,CAAC,KAAK,SAAS,cAAc,CAC/C,SAAQ,aACR,YAAW,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAMX,MAAM,EAAE,KAAK;IAJzC,SAAgB,IAAI,cAAkB;IAEtC,SAAiB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAEb,MAAM,EAAE,KAAK;IAIzC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;CAGxB"}
@@ -0,0 +1,54 @@
1
+ import { SQLIdentifier } from "../sql/nodes.js";
2
+ export const Kind = Object.freeze({
3
+ SCHEMA: "SCHEMA",
4
+ TABLE: "TABLE",
5
+ COLUMN: "COLUMN",
6
+ INDEX: "INDEX",
7
+ DOMAIN: "DOMAIN",
8
+ SEQUENCE: "SEQUENCE",
9
+ VIEW: "VIEW",
10
+ FUNCTION: "FUNCTION",
11
+ RELATIONS: "RELATIONS",
12
+ INDEX_COLUMN: "INDEX_COLUMN",
13
+ REFERENCE: "REFERENCE",
14
+ CHECK_CONSTRAINT: "CHECK_CONSTRAINT",
15
+ UNIQUE_CONSTRAINT: "UNIQUE_CONSTRAINT",
16
+ PRIMARY_KEY_CONSTRAINT: "PRIMARY_KEY_CONSTRAINT",
17
+ });
18
+ export const Relation = Object.freeze({
19
+ HAS_ONE: "has_one",
20
+ HAS_MANY: "has_many",
21
+ BELONGS_TO: "belongs_to",
22
+ });
23
+ export const defaultCodec = {
24
+ encode(value) {
25
+ return value;
26
+ },
27
+ decode(raw) {
28
+ return raw;
29
+ },
30
+ };
31
+ export class DefinitionNode {
32
+ name;
33
+ constructor(name) {
34
+ this.name = name;
35
+ }
36
+ toJSON() {
37
+ return {
38
+ kind: this.kind,
39
+ name: this.name,
40
+ };
41
+ }
42
+ }
43
+ export class NodeRef extends SQLIdentifier {
44
+ target;
45
+ kind = Kind.REFERENCE;
46
+ constructor(target) {
47
+ super(target.name);
48
+ this.target = target;
49
+ }
50
+ toJSON() {
51
+ return this.target.name;
52
+ }
53
+ }
54
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/definition/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;CACxC,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;CAChB,CAAC,CAAC;AAUZ,MAAM,CAAC,MAAM,YAAY,GAAkC;IACzD,MAAM,CAAC,KAAK;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG;QACR,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC;AAIF,MAAM,OAAgB,cAAc;IAQlB,IAAI,CAAQ;IAE5B,YAAY,IAAW;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,OACX,SAAQ,aAAa;IAOO;IAJZ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAItC,YAA4B,MAAa;QACvC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QADO,WAAM,GAAN,MAAM,CAAO;IAEzC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,74 @@
1
+ import { SQLIdentifier, SQLNode } from "../sql/nodes.js";
2
+ import { HasDefault, NotNull, PrimaryKey, TypedObject, Unique, WithValueType } from "../utils/index.js";
3
+ import { ColumnCodec, DefinitionNode, NodeRef } from "./base.js";
4
+ import { AnyCheckConstraintDefinition } from "./constraint.js";
5
+ import { AnyDomainDefinition } from "./domain.js";
6
+ export type UpdateGuard<T extends TypedObject> = T["__type"] extends {
7
+ primaryKey: true;
8
+ } ? never : T;
9
+ export interface ColumnConfig<TValueType = unknown, TRawType = unknown> {
10
+ dataType: string;
11
+ valueType: TValueType;
12
+ rawType: TRawType;
13
+ notNull: boolean;
14
+ primaryKey: boolean;
15
+ unique: boolean;
16
+ codec: ColumnCodec<TRawType, TValueType>;
17
+ domain: AnyDomainDefinition;
18
+ }
19
+ export type AnyColumnDefinition = ColumnDefinition<any, any>;
20
+ export declare class ColumnDefinition<TName extends string, TConfig extends ColumnConfig> extends DefinitionNode<TName, TConfig> {
21
+ readonly kind: "COLUMN";
22
+ protected _dataType: string;
23
+ protected _notNull: boolean;
24
+ protected _primaryKey: boolean;
25
+ protected _unique: boolean;
26
+ protected _defaultValue?: SQLNode;
27
+ protected _domain?: NodeRef<TConfig["domain"]>;
28
+ protected _check?: AnyCheckConstraintDefinition;
29
+ protected _codec: ColumnCodec<this["__type"]["rawType"], this["__type"]["valueType"]>;
30
+ protected _onCreate?: () => this["__type"]["valueType"];
31
+ protected _onUpdate?: () => this["__type"]["valueType"];
32
+ constructor(name: TName, config?: Partial<TConfig>);
33
+ /**
34
+ * Marks the column as `NOT NULL`. This means that the column cannot contain null values.
35
+ */
36
+ notNull(): NotNull<this>;
37
+ primaryKey(): PrimaryKey<this>;
38
+ unique(): Unique<this>;
39
+ default(value: this["__type"]["valueType"]): HasDefault<this>;
40
+ /**
41
+ * Adds a check constraint to the column.
42
+ *
43
+ * The callback receives the column name as a sql indetifier that can be used to build the check expression.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * column.check((col) => sql`${col} > 0`, "positive_check");
48
+ * ```
49
+ *
50
+ * @param cb a callback that can takes the colun identifier.
51
+ * @param name Constraint name. If not provided, it will be generated as `${columnName}_check`.
52
+ * @returns
53
+ */
54
+ check(cb: (self: SQLIdentifier) => SQLNode, name?: string): this;
55
+ $type<T>(): WithValueType<this, T>;
56
+ $onCreate(cb: () => this["__type"]["valueType"]): this;
57
+ $onUpdate(cb: () => this["__type"]["valueType"]): UpdateGuard<this>;
58
+ toJSON(): {
59
+ readonly kind: "COLUMN";
60
+ readonly name: TName;
61
+ readonly dataType: string;
62
+ readonly notNull: boolean;
63
+ readonly primaryKey: boolean;
64
+ readonly unique: boolean;
65
+ readonly defaultValue: string | null;
66
+ readonly check: {
67
+ kind: "CHECK_CONSTRAINT";
68
+ name: any;
69
+ expression: string;
70
+ } | null;
71
+ readonly domain: NonNullable<TConfig["domain"]["name"]> | null;
72
+ };
73
+ }
74
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/definition/column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAsB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAgB,cAAc,EAAQ,OAAO,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAA6B,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,GACrF,KAAK,GACL,CAAC,CAAC;AAEN,MAAM,WAAW,YAAY,CAAC,UAAU,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAGD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7D,qBAAa,gBAAgB,CAC3B,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,YAAY,CAC5B,SAAQ,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,IAAI,WAAe;IAE5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,SAAS,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC;IAEhD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACtF,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;IACxD,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;gBAE5C,IAAI,EAAE,KAAK,EAAE,MAAM,GAAE,OAAO,CAAC,OAAO,CAAM;IAWtD;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC;IAM9B,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;IAKpE;;;;;;;;;;;;;OAaG;IAEI,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAIlC,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI;IAKtD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;IAS1E,MAAM;;;;;;;;;;;;;;;CAeP"}
@@ -0,0 +1,94 @@
1
+ import { SQLIdentifier, SQLParam, SQLQuery } from "../sql/nodes.js";
2
+ import { defaultCodec, DefinitionNode, Kind, NodeRef } from "./base.js";
3
+ import { CheckConstraintDefinition } from "./constraint.js";
4
+ export class ColumnDefinition extends DefinitionNode {
5
+ kind = Kind.COLUMN;
6
+ _dataType;
7
+ _notNull;
8
+ _primaryKey;
9
+ _unique;
10
+ _defaultValue;
11
+ _domain;
12
+ _check;
13
+ _codec;
14
+ _onCreate;
15
+ _onUpdate;
16
+ constructor(name, config = {}) {
17
+ super(name);
18
+ this._dataType = config.domain?.name ?? config.dataType ?? "text";
19
+ this._notNull = config.notNull ?? false;
20
+ this._primaryKey = config.primaryKey ?? false;
21
+ this._unique = config.unique ?? false;
22
+ this._codec = config.codec ?? defaultCodec;
23
+ this._domain = config.domain ? new NodeRef(config.domain) : undefined;
24
+ }
25
+ /**
26
+ * Marks the column as `NOT NULL`. This means that the column cannot contain null values.
27
+ */
28
+ notNull() {
29
+ this._notNull = true;
30
+ return this;
31
+ }
32
+ primaryKey() {
33
+ this._primaryKey = true;
34
+ this._notNull = true;
35
+ return this;
36
+ }
37
+ unique() {
38
+ this._unique = true;
39
+ return this;
40
+ }
41
+ default(value) {
42
+ this._defaultValue = new SQLParam(value, this._codec.encode);
43
+ return this;
44
+ }
45
+ /**
46
+ * Adds a check constraint to the column.
47
+ *
48
+ * The callback receives the column name as a sql indetifier that can be used to build the check expression.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * column.check((col) => sql`${col} > 0`, "positive_check");
53
+ * ```
54
+ *
55
+ * @param cb a callback that can takes the colun identifier.
56
+ * @param name Constraint name. If not provided, it will be generated as `${columnName}_check`.
57
+ * @returns
58
+ */
59
+ check(cb, name) {
60
+ const sql = new SQLQuery(cb(new SQLIdentifier(this.name)));
61
+ this._check = new CheckConstraintDefinition(name ?? `${this.name}_check`, { expression: sql });
62
+ return this;
63
+ }
64
+ $type() {
65
+ return this;
66
+ }
67
+ $onCreate(cb) {
68
+ this._onCreate = cb;
69
+ return this;
70
+ }
71
+ $onUpdate(cb) {
72
+ if (this._primaryKey) {
73
+ throw new Error("Cannot set onUpdate callback for a primary key column.");
74
+ }
75
+ this._onUpdate = cb;
76
+ return this;
77
+ }
78
+ toJSON() {
79
+ return {
80
+ kind: this.kind,
81
+ name: this.name,
82
+ dataType: this._dataType,
83
+ notNull: this._notNull,
84
+ primaryKey: this._primaryKey,
85
+ unique: this._unique,
86
+ defaultValue: this._defaultValue
87
+ ? new SQLQuery(this._defaultValue).toQuery({ inlineParams: true }).text
88
+ : null,
89
+ check: this._check?.toJSON() ?? null,
90
+ domain: this._domain?.toJSON() ?? null,
91
+ };
92
+ }
93
+ }
94
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/definition/column.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { SQLQuery } from "../sql/nodes.js";
2
+ import { DefinitionNode, NodeRef } from "./base.js";
3
+ import { AnyColumnDefinition } from "./column.js";
4
+ import { AnyTableDefinition, ColumnRefs } from "./table.js";
5
+ type ColumnRef = NodeRef<AnyColumnDefinition>;
6
+ export type JoinColumnNames<T extends ColumnRef[]> = T extends [
7
+ infer I extends ColumnRef,
8
+ ...infer R extends ColumnRef[]
9
+ ] ? R extends [] ? I["name"] : `${I["name"]}_${JoinColumnNames<R>}` : "";
10
+ export type InferConstraintName<TName extends string | undefined, TSource extends NodeRef<DefinitionNode>, TColumns extends ColumnRef[], TSuffix extends string> = TName extends string ? TName : `${TSource["target"]["name"]}_${JoinColumnNames<TColumns>}_${TSuffix}`;
11
+ export interface CheckConstraintConfig {
12
+ expression: SQLQuery;
13
+ }
14
+ export interface UniqueConstraintConfig<TTable extends AnyTableDefinition> {
15
+ table: TTable;
16
+ columns: ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][];
17
+ }
18
+ export interface PrimaryKeyConstraintConfig<TTable extends AnyTableDefinition> {
19
+ table: TTable;
20
+ columns: ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][];
21
+ }
22
+ export declare const extractConstrainName: <TName extends string, TSource extends DefinitionNode, TColumns extends ColumnRef[], TSuffix extends string>(name: TName | undefined, source: NodeRef<TSource>, columns: TColumns, suffix: TSuffix) => InferConstraintName<TName, NodeRef<TSource>, TColumns, TSuffix>;
23
+ export type AnyCheckConstraintDefinition = CheckConstraintDefinition<any>;
24
+ export type AnyUniqueConstraintDefinition = UniqueConstraintDefinition<any, any>;
25
+ export type AnyPrimaryKeyConstraintDefinition = PrimaryKeyConstraintDefinition<any, any>;
26
+ export type AnyConstraintDefinition = AnyCheckConstraintDefinition | AnyUniqueConstraintDefinition | AnyPrimaryKeyConstraintDefinition;
27
+ export declare class CheckConstraintDefinition<TName extends string> extends DefinitionNode<TName, CheckConstraintConfig> {
28
+ readonly kind: "CHECK_CONSTRAINT";
29
+ protected _expression: CheckConstraintConfig["expression"];
30
+ constructor(name: TName, config: CheckConstraintConfig);
31
+ toJSON(): {
32
+ kind: "CHECK_CONSTRAINT";
33
+ name: TName;
34
+ expression: string;
35
+ };
36
+ }
37
+ export declare class UniqueConstraintDefinition<TName extends string, TTable extends AnyTableDefinition> extends DefinitionNode<TName, UniqueConstraintConfig<TTable>> {
38
+ readonly kind: "UNIQUE_CONSTRAINT";
39
+ protected _table: TTable;
40
+ protected _columns: UniqueConstraintConfig<TTable>["columns"];
41
+ protected _include?: UniqueConstraintConfig<TTable>["columns"];
42
+ protected _distinctNulls?: boolean;
43
+ constructor(name: TName, config: UniqueConstraintConfig<TTable>);
44
+ include(cb: (columns: ColumnRefs<TTable["columns"]>) => ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][]): this;
45
+ distinctNulls(distinct?: boolean): this;
46
+ toJSON(): {
47
+ readonly kind: "UNIQUE_CONSTRAINT";
48
+ readonly name: TName;
49
+ readonly columns: TTable["columns"][keyof TTable["columns"]]["name"][];
50
+ readonly include: TTable["columns"][keyof TTable["columns"]]["name"][] | null;
51
+ readonly distinctNulls: boolean | null;
52
+ };
53
+ }
54
+ export declare class PrimaryKeyConstraintDefinition<TName extends string, TTable extends AnyTableDefinition> extends DefinitionNode<TName, PrimaryKeyConstraintConfig<TTable>> {
55
+ readonly kind: "PRIMARY_KEY_CONSTRAINT";
56
+ protected _table: TTable;
57
+ protected _columns: PrimaryKeyConstraintConfig<TTable>["columns"];
58
+ protected _include?: PrimaryKeyConstraintConfig<TTable>["columns"];
59
+ constructor(name: TName, config: PrimaryKeyConstraintConfig<TTable>);
60
+ include(cb: (columns: ColumnRefs<TTable["columns"]>) => ColumnRefs<TTable["columns"]>[keyof TTable["columns"]][]): this;
61
+ toJSON(): {
62
+ readonly kind: "PRIMARY_KEY_CONSTRAINT";
63
+ readonly name: TName;
64
+ readonly columns: TTable["columns"][keyof TTable["columns"]]["name"][];
65
+ readonly include: TTable["columns"][keyof TTable["columns"]]["name"][] | null;
66
+ };
67
+ }
68
+ export {};
69
+ //# sourceMappingURL=constraint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../src/definition/constraint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { DefinitionNode, Kind } from "./base.js";
2
+ export const extractConstrainName = (name, source, columns, suffix) => {
3
+ if (name) {
4
+ return name;
5
+ }
6
+ const sourceName = source.name;
7
+ const columnNames = columns.map((col) => col.name).join("_");
8
+ return `${sourceName}_${columnNames}_${suffix}`;
9
+ };
10
+ export class CheckConstraintDefinition extends DefinitionNode {
11
+ kind = Kind.CHECK_CONSTRAINT;
12
+ _expression;
13
+ constructor(name, config) {
14
+ super(name);
15
+ this._expression = config.expression;
16
+ }
17
+ toJSON() {
18
+ const { text } = this._expression.toQuery({ inlineParams: true });
19
+ return {
20
+ kind: this.kind,
21
+ name: this.name,
22
+ expression: text,
23
+ };
24
+ }
25
+ }
26
+ export class UniqueConstraintDefinition extends DefinitionNode {
27
+ kind = Kind.UNIQUE_CONSTRAINT;
28
+ _table;
29
+ _columns;
30
+ _include;
31
+ _distinctNulls;
32
+ constructor(name, config) {
33
+ super(name);
34
+ this._columns = config.columns;
35
+ this._table = config.table;
36
+ this._distinctNulls = true;
37
+ }
38
+ include(cb) {
39
+ this._include = cb(this._table._getColumnRefs());
40
+ return this;
41
+ }
42
+ distinctNulls(distinct = true) {
43
+ this._distinctNulls = distinct;
44
+ return this;
45
+ }
46
+ toJSON() {
47
+ return {
48
+ kind: this.kind,
49
+ name: this.name,
50
+ columns: this._columns.map((col) => col.toJSON()),
51
+ include: this._include ? this._include.map((col) => col.toJSON()) : null,
52
+ distinctNulls: this._distinctNulls ?? null,
53
+ };
54
+ }
55
+ }
56
+ export class PrimaryKeyConstraintDefinition extends DefinitionNode {
57
+ kind = Kind.PRIMARY_KEY_CONSTRAINT;
58
+ _table;
59
+ _columns;
60
+ _include;
61
+ constructor(name, config) {
62
+ super(name);
63
+ this._table = config.table;
64
+ this._columns = config.columns;
65
+ }
66
+ include(cb) {
67
+ this._columns = cb(this._table._getColumnRefs());
68
+ return this;
69
+ }
70
+ toJSON() {
71
+ return {
72
+ kind: this.kind,
73
+ name: this.name,
74
+ columns: this._columns.map((col) => col.toJSON()),
75
+ include: this._include ? this._include.map((col) => col.toJSON()) : null,
76
+ };
77
+ }
78
+ }
79
+ //# sourceMappingURL=constraint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/definition/constraint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAsC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAMlC,IAAuB,EACvB,MAAwB,EACxB,OAAiB,EACjB,MAAe,EACkD,EAAE;IACnE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAuE,CAAC;IACjF,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7D,OAAO,GAAG,UAAU,IAAI,WAAW,IAAI,MAAM,EAK5C,CAAC;AACJ,CAAC,CAAC;AAcF,MAAM,OAAO,yBAAgD,SAAQ,cAGpE;IACU,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAE5B,WAAW,CAAsC;IAE3D,YAAY,IAAW,EAAE,MAA6B;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IACvC,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,0BAGX,SAAQ,cAAqD;IACpD,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAE7B,MAAM,CAAS;IACf,QAAQ,CAA4C;IACpD,QAAQ,CAA6C;IACrD,cAAc,CAAW;IAEnC,YAAY,IAAW,EAAE,MAAsC;QAC7D,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAe,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAEM,OAAO,CACZ,EAE6D;QAE7D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,aAAa,CAAC,QAAQ,GAAG,IAAI;QAClC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,aAAa,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;SAClC,CAAC;IACb,CAAC;CACF;AAED,MAAM,OAAO,8BAGX,SAAQ,cAAyD;IACxD,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;IAElC,MAAM,CAAS;IACf,QAAQ,CAAgD;IACxD,QAAQ,CAAiD;IAEnE,YAAY,IAAW,EAAE,MAA0C;QACjE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAe,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,CAAC;IAEM,OAAO,CACZ,EAE6D;QAE7D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;SAChE,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import { SQLNode } from "../sql/nodes.js";
2
+ import { HasDefault, NotNull, WithValueType } from "../utils/index.js";
3
+ import { ColumnCodec, DefinitionNode } from "./base.js";
4
+ import { AnyCheckConstraintDefinition } from "./constraint.js";
5
+ export interface DomainConfig<TValueType = unknown, TRawType = unknown> {
6
+ valueType: TValueType;
7
+ rawType: TRawType;
8
+ dataType: string;
9
+ notNull: boolean;
10
+ codec: ColumnCodec<TRawType, TValueType>;
11
+ }
12
+ export type AnyDomainDefinition = DomainDefinition<any, any>;
13
+ export declare class DomainDefinition<TName extends string, TConfig extends DomainConfig> extends DefinitionNode<TName, TConfig> {
14
+ readonly kind: "DOMAIN";
15
+ readonly __type: TConfig;
16
+ protected _dataType: TConfig["dataType"];
17
+ protected _notNull: TConfig["notNull"];
18
+ protected _defaultValue?: SQLNode;
19
+ protected _check?: AnyCheckConstraintDefinition;
20
+ protected _codec: ColumnCodec<this["__type"]["rawType"], this["__type"]["valueType"]>;
21
+ constructor(name: TName, config: Partial<TConfig>);
22
+ notNull(): NotNull<this>;
23
+ default(value: this["__type"]["valueType"]): HasDefault<this>;
24
+ check<T extends string>(cb: (value: SQLNode) => SQLNode, name?: T): this;
25
+ $type<T>(): WithValueType<this, T>;
26
+ toJSON(): {
27
+ readonly kind: "DOMAIN";
28
+ readonly name: TName;
29
+ readonly dataType: TConfig["dataType"];
30
+ readonly notNull: TConfig["notNull"];
31
+ readonly defaultValue: string | undefined;
32
+ readonly check: {
33
+ kind: "CHECK_CONSTRAINT";
34
+ name: any;
35
+ expression: string;
36
+ } | undefined;
37
+ };
38
+ }
39
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/definition/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA8B,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAgB,cAAc,EAAQ,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAA6B,MAAM,iBAAiB,CAAC;AAE1F,MAAM,WAAW,YAAY,CAAC,UAAU,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO;IACpE,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CAC1C;AAGD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7D,qBAAa,gBAAgB,CAC3B,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,YAAY,CAC5B,SAAQ,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,IAAI,WAAe;IAE5B,SAAiB,MAAM,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC;IAEhD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAE1E,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;IAQ1C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;IAK7D,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IASxE,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAIzC,MAAM;;;;;;;;;;;;CAYP"}