dsqlbase 0.1.0 → 0.1.2

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 (162) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/client/create.d.ts +73 -0
  3. package/dist/client/create.d.ts.map +1 -0
  4. package/dist/client/create.js +82 -0
  5. package/dist/client/create.js.map +1 -0
  6. package/dist/client/database/base.d.ts +8 -0
  7. package/dist/client/database/base.d.ts.map +1 -0
  8. package/dist/client/database/base.js +13 -0
  9. package/dist/client/database/base.js.map +1 -0
  10. package/dist/client/database/client.d.ts +5 -0
  11. package/dist/client/database/client.d.ts.map +1 -0
  12. package/dist/client/database/client.js +4 -0
  13. package/dist/client/database/client.js.map +1 -0
  14. package/dist/client/database/index.d.ts +9 -0
  15. package/dist/client/database/index.d.ts.map +1 -0
  16. package/dist/client/database/index.js +3 -0
  17. package/dist/client/database/index.js.map +1 -0
  18. package/dist/client/index.d.ts +6 -0
  19. package/dist/client/index.d.ts.map +1 -0
  20. package/dist/client/index.js +5 -0
  21. package/dist/client/index.js.map +1 -0
  22. package/dist/client/model/base.d.ts +330 -0
  23. package/dist/client/model/base.d.ts.map +1 -0
  24. package/dist/client/model/base.js +7 -0
  25. package/dist/client/model/base.js.map +1 -0
  26. package/dist/client/model/client.d.ts +102 -0
  27. package/dist/client/model/client.d.ts.map +1 -0
  28. package/dist/client/model/client.js +123 -0
  29. package/dist/client/model/client.js.map +1 -0
  30. package/dist/client/model/normalizer.d.ts +19 -0
  31. package/dist/client/model/normalizer.d.ts.map +1 -0
  32. package/dist/client/model/normalizer.js +221 -0
  33. package/dist/client/model/normalizer.js.map +1 -0
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/pg/index.d.ts +9 -0
  39. package/dist/pg/index.d.ts.map +1 -0
  40. package/dist/pg/index.js +14 -0
  41. package/dist/pg/index.js.map +1 -0
  42. package/dist/pglite/index.d.ts +9 -0
  43. package/dist/pglite/index.d.ts.map +1 -0
  44. package/dist/pglite/index.js +14 -0
  45. package/dist/pglite/index.js.map +1 -0
  46. package/dist/schema/columns/array.d.ts +16 -0
  47. package/dist/schema/columns/array.d.ts.map +1 -0
  48. package/dist/schema/columns/array.js +24 -0
  49. package/dist/schema/columns/array.js.map +1 -0
  50. package/dist/schema/columns/bigint.d.ts +11 -0
  51. package/dist/schema/columns/bigint.d.ts.map +1 -0
  52. package/dist/schema/columns/bigint.js +19 -0
  53. package/dist/schema/columns/bigint.js.map +1 -0
  54. package/dist/schema/columns/boolean.d.ts +10 -0
  55. package/dist/schema/columns/boolean.d.ts.map +1 -0
  56. package/dist/schema/columns/boolean.js +18 -0
  57. package/dist/schema/columns/boolean.js.map +1 -0
  58. package/dist/schema/columns/bytea.d.ts +8 -0
  59. package/dist/schema/columns/bytea.d.ts.map +1 -0
  60. package/dist/schema/columns/bytea.js +16 -0
  61. package/dist/schema/columns/bytea.js.map +1 -0
  62. package/dist/schema/columns/char.d.ts +10 -0
  63. package/dist/schema/columns/char.d.ts.map +1 -0
  64. package/dist/schema/columns/char.js +18 -0
  65. package/dist/schema/columns/char.js.map +1 -0
  66. package/dist/schema/columns/date.d.ts +23 -0
  67. package/dist/schema/columns/date.d.ts.map +1 -0
  68. package/dist/schema/columns/date.js +29 -0
  69. package/dist/schema/columns/date.js.map +1 -0
  70. package/dist/schema/columns/double.d.ts +13 -0
  71. package/dist/schema/columns/double.d.ts.map +1 -0
  72. package/dist/schema/columns/double.js +21 -0
  73. package/dist/schema/columns/double.js.map +1 -0
  74. package/dist/schema/columns/identity.d.ts +56 -0
  75. package/dist/schema/columns/identity.d.ts.map +1 -0
  76. package/dist/schema/columns/identity.js +65 -0
  77. package/dist/schema/columns/identity.js.map +1 -0
  78. package/dist/schema/columns/int.d.ts +11 -0
  79. package/dist/schema/columns/int.d.ts.map +1 -0
  80. package/dist/schema/columns/int.js +19 -0
  81. package/dist/schema/columns/int.js.map +1 -0
  82. package/dist/schema/columns/interval.d.ts +23 -0
  83. package/dist/schema/columns/interval.d.ts.map +1 -0
  84. package/dist/schema/columns/interval.js +40 -0
  85. package/dist/schema/columns/interval.js.map +1 -0
  86. package/dist/schema/columns/json.d.ts +9 -0
  87. package/dist/schema/columns/json.d.ts.map +1 -0
  88. package/dist/schema/columns/json.js +18 -0
  89. package/dist/schema/columns/json.js.map +1 -0
  90. package/dist/schema/columns/numeric.d.ts +11 -0
  91. package/dist/schema/columns/numeric.d.ts.map +1 -0
  92. package/dist/schema/columns/numeric.js +19 -0
  93. package/dist/schema/columns/numeric.js.map +1 -0
  94. package/dist/schema/columns/real.d.ts +13 -0
  95. package/dist/schema/columns/real.d.ts.map +1 -0
  96. package/dist/schema/columns/real.js +21 -0
  97. package/dist/schema/columns/real.js.map +1 -0
  98. package/dist/schema/columns/smallint.d.ts +11 -0
  99. package/dist/schema/columns/smallint.d.ts.map +1 -0
  100. package/dist/schema/columns/smallint.js +19 -0
  101. package/dist/schema/columns/smallint.js.map +1 -0
  102. package/dist/schema/columns/text.d.ts +9 -0
  103. package/dist/schema/columns/text.d.ts.map +1 -0
  104. package/dist/schema/columns/text.js +17 -0
  105. package/dist/schema/columns/text.js.map +1 -0
  106. package/dist/schema/columns/time.d.ts +20 -0
  107. package/dist/schema/columns/time.d.ts.map +1 -0
  108. package/dist/schema/columns/time.js +19 -0
  109. package/dist/schema/columns/time.js.map +1 -0
  110. package/dist/schema/columns/timestamp.d.ts +40 -0
  111. package/dist/schema/columns/timestamp.d.ts.map +1 -0
  112. package/dist/schema/columns/timestamp.js +48 -0
  113. package/dist/schema/columns/timestamp.js.map +1 -0
  114. package/dist/schema/columns/uuid.d.ts +17 -0
  115. package/dist/schema/columns/uuid.d.ts.map +1 -0
  116. package/dist/schema/columns/uuid.js +27 -0
  117. package/dist/schema/columns/uuid.js.map +1 -0
  118. package/dist/schema/columns/varchar.d.ts +9 -0
  119. package/dist/schema/columns/varchar.d.ts.map +1 -0
  120. package/dist/schema/columns/varchar.js +17 -0
  121. package/dist/schema/columns/varchar.js.map +1 -0
  122. package/dist/schema/domain.d.ts +19 -0
  123. package/dist/schema/domain.d.ts.map +1 -0
  124. package/dist/schema/domain.js +37 -0
  125. package/dist/schema/domain.js.map +1 -0
  126. package/dist/schema/index.d.ts +27 -0
  127. package/dist/schema/index.d.ts.map +1 -0
  128. package/dist/schema/index.js +25 -0
  129. package/dist/schema/index.js.map +1 -0
  130. package/dist/schema/namespace.d.ts +22 -0
  131. package/dist/schema/namespace.d.ts.map +1 -0
  132. package/dist/schema/namespace.js +24 -0
  133. package/dist/schema/namespace.js.map +1 -0
  134. package/dist/schema/relations.d.ts +12 -0
  135. package/dist/schema/relations.d.ts.map +1 -0
  136. package/dist/schema/relations.js +29 -0
  137. package/dist/schema/relations.js.map +1 -0
  138. package/dist/schema/sequence.d.ts +14 -0
  139. package/dist/schema/sequence.d.ts.map +1 -0
  140. package/dist/schema/sequence.js +16 -0
  141. package/dist/schema/sequence.js.map +1 -0
  142. package/dist/schema/table.d.ts +20 -0
  143. package/dist/schema/table.d.ts.map +1 -0
  144. package/dist/schema/table.js +22 -0
  145. package/dist/schema/table.js.map +1 -0
  146. package/dist/schema/utils/date.d.ts +33 -0
  147. package/dist/schema/utils/date.d.ts.map +1 -0
  148. package/dist/schema/utils/date.js +62 -0
  149. package/dist/schema/utils/date.js.map +1 -0
  150. package/dist/schema/utils/duration.d.ts +66 -0
  151. package/dist/schema/utils/duration.d.ts.map +1 -0
  152. package/dist/schema/utils/duration.js +167 -0
  153. package/dist/schema/utils/duration.js.map +1 -0
  154. package/dist/schema/utils/json.d.ts +2 -0
  155. package/dist/schema/utils/json.d.ts.map +1 -0
  156. package/dist/schema/utils/json.js +12 -0
  157. package/dist/schema/utils/json.js.map +1 -0
  158. package/package.json +32 -7
  159. package/dist/schema.d.ts +0 -2
  160. package/dist/schema.d.ts.map +0 -1
  161. package/dist/schema.js +0 -8
  162. package/dist/schema.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { DefinitionSchema } from "@dsqlbase/core";
2
+ import { TypedObject } from "@dsqlbase/core/utils";
3
+ import { AnyTable, ExecutableQuery, ExecutionContext, OperationResult, Schema } from "@dsqlbase/core/runtime";
4
+ import { FindOneArgs, QueryArgs, CreateArgs, UpdateArgs, DeleteArgs, QueryResultOf, ReturningResultOf } from "./base.js";
5
+ export declare class ModelClient<TTable extends AnyTable, TDefinition extends DefinitionSchema> implements TypedObject<Schema<TDefinition>> {
6
+ readonly __type: Schema<TDefinition>;
7
+ private readonly _ctx;
8
+ private readonly _table;
9
+ private readonly _normalizer;
10
+ constructor(ctx: ExecutionContext<TDefinition>, table: TTable);
11
+ /**
12
+ * Finds a single record matching the specified criteria.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const user = await dsql.users.findOne({
17
+ * where: { id: "123" },
18
+ * select: { id: true, name: true },
19
+ * join: {
20
+ * profile: {
21
+ * select: { bio: true }
22
+ * }
23
+ * }
24
+ * });
25
+ * ```
26
+ * @notes
27
+ * * The `where` clause is required to ensure that the operation is deterministic and does not accidentally return an unintended record.
28
+ * * The `select` clause allows you to specify which fields to retrieve, if not provided, all fields will be selected by default.
29
+ *
30
+ * @param args
31
+ * @returns An executable query that can be awaited.
32
+ *
33
+ */
34
+ findOne<TArgs extends FindOneArgs<TTable, this["__type"]>>(args: TArgs): ExecutableQuery<OperationResult<"one", QueryResultOf<TTable, this["__type"], TArgs>>>;
35
+ /**
36
+ * Finds multiple records matching the specified criteria.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const users = await dsql.users.findMany({
41
+ * where: { age: { gt: 18 } },
42
+ * orderBy: [{ age: "desc" }],
43
+ * limit: 10,
44
+ * });
45
+ * ```
46
+ * @param args The query arguments, including filtering, ordering, pagination, and field selection options.
47
+ * @returns An executable query that can be awaited to retrieve the matching records.
48
+ */
49
+ findMany<TArgs extends QueryArgs<TTable, this["__type"]>>(args: TArgs): ExecutableQuery<OperationResult<"many", QueryResultOf<TTable, this["__type"], TArgs>>>;
50
+ /**
51
+ * Creates a new record in the database with the specified values.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const newUser = await dsql.users.create({
56
+ * data: {
57
+ * firstName: "John",
58
+ * lastName: "Doe",
59
+ * emailAddress: "john.doe@example.com"
60
+ * }
61
+ * });
62
+ * ```
63
+ * @param args The arguments for creating a new record, including the data to be inserted.
64
+ * @returns An executable query that can be awaited to retrieve the newly created record.
65
+ */
66
+ create<TArgs extends CreateArgs<TTable>>(args: TArgs): ExecutableQuery<OperationResult<"one", ReturningResultOf<TTable, TArgs>>>;
67
+ /**
68
+ * Updates records in the database matching the specified criteria with the provided values.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const updatedUser = await dsql.users.update({
73
+ * where: { id: "123" },
74
+ * set: { emailAddress: "new.email@example.com" }
75
+ * });
76
+ * ```
77
+ * @param args The arguments for updating records, including the criteria for selecting records and the values to be updated.
78
+ * @returns An executable query that can be awaited to retrieve the updated record.
79
+ */
80
+ update<TArgs extends UpdateArgs<TTable>>(args: TArgs): ExecutableQuery<OperationResult<"one", ReturningResultOf<TTable, TArgs>>>;
81
+ /**
82
+ * Deletes records from the database matching the specified criteria.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const deletedUser = await dsql.users.delete({
87
+ * where: { id: "123" }
88
+ * return: {
89
+ * id: true,
90
+ * name: true
91
+ * }
92
+ * });
93
+ * ```
94
+ * @notes
95
+ * * The `where` clause is required to ensure that the operation is deterministic and does not accidentally delete unintended records.
96
+ *
97
+ * @param args The arguments for deleting records, including the criteria for selecting records to delete.
98
+ * @returns An executable query that can be awaited to retrieve the deleted record.
99
+ */
100
+ delete<TArgs extends DeleteArgs<TTable>>(args: TArgs): ExecutableQuery<OperationResult<"one", ReturningResultOf<TTable, TArgs>>>;
101
+ }
102
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client/model/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,MAAM,EACP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAGnB,qBAAa,WAAW,CACtB,MAAM,SAAS,QAAQ,EACvB,WAAW,SAAS,gBAAgB,CACpC,YAAW,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,SAAiB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;gBAEjD,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM;IAM7D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IAEI,OAAO,CAAC,KAAK,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC9D,IAAI,EAAE,KAAK,GACV,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAOxF;;;;;;;;;;;;;OAaG;IAEI,QAAQ,CAAC,KAAK,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC7D,IAAI,EAAE,KAAK,GACV,eAAe,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAOzF;;;;;;;;;;;;;;;OAeG;IAEI,MAAM,CAAC,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAC5C,IAAI,EAAE,KAAK,GACV,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAO5E;;;;;;;;;;;;OAYG;IAEI,MAAM,CAAC,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAC5C,IAAI,EAAE,KAAK,GACV,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAO5E;;;;;;;;;;;;;;;;;;OAkBG;IAEI,MAAM,CAAC,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAC5C,IAAI,EAAE,KAAK,GACV,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;CAM7E"}
@@ -0,0 +1,123 @@
1
+ import { ExecutableQuery, } from "@dsqlbase/core/runtime";
2
+ import { RequestNormalizer } from "./normalizer.js";
3
+ export class ModelClient {
4
+ _ctx;
5
+ _table;
6
+ _normalizer;
7
+ constructor(ctx, table) {
8
+ this._ctx = ctx;
9
+ this._table = table;
10
+ this._normalizer = new RequestNormalizer(ctx);
11
+ }
12
+ /**
13
+ * Finds a single record matching the specified criteria.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const user = await dsql.users.findOne({
18
+ * where: { id: "123" },
19
+ * select: { id: true, name: true },
20
+ * join: {
21
+ * profile: {
22
+ * select: { bio: true }
23
+ * }
24
+ * }
25
+ * });
26
+ * ```
27
+ * @notes
28
+ * * The `where` clause is required to ensure that the operation is deterministic and does not accidentally return an unintended record.
29
+ * * The `select` clause allows you to specify which fields to retrieve, if not provided, all fields will be selected by default.
30
+ *
31
+ * @param args
32
+ * @returns An executable query that can be awaited.
33
+ *
34
+ */
35
+ findOne(args) {
36
+ const request = this._normalizer.normalizeSelect(this._table, args, "one");
37
+ const operation = this._ctx.operations.createSelectOperation(this._table, request);
38
+ return new ExecutableQuery(operation, this._ctx.session);
39
+ }
40
+ /**
41
+ * Finds multiple records matching the specified criteria.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const users = await dsql.users.findMany({
46
+ * where: { age: { gt: 18 } },
47
+ * orderBy: [{ age: "desc" }],
48
+ * limit: 10,
49
+ * });
50
+ * ```
51
+ * @param args The query arguments, including filtering, ordering, pagination, and field selection options.
52
+ * @returns An executable query that can be awaited to retrieve the matching records.
53
+ */
54
+ findMany(args) {
55
+ const request = this._normalizer.normalizeSelect(this._table, args, "many");
56
+ const operation = this._ctx.operations.createSelectOperation(this._table, request);
57
+ return new ExecutableQuery(operation, this._ctx.session);
58
+ }
59
+ /**
60
+ * Creates a new record in the database with the specified values.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const newUser = await dsql.users.create({
65
+ * data: {
66
+ * firstName: "John",
67
+ * lastName: "Doe",
68
+ * emailAddress: "john.doe@example.com"
69
+ * }
70
+ * });
71
+ * ```
72
+ * @param args The arguments for creating a new record, including the data to be inserted.
73
+ * @returns An executable query that can be awaited to retrieve the newly created record.
74
+ */
75
+ create(args) {
76
+ const request = this._normalizer.normalizeInsert(this._table, args, "one");
77
+ const operation = this._ctx.operations.createInsertOperation(this._table, request);
78
+ return new ExecutableQuery(operation, this._ctx.session);
79
+ }
80
+ /**
81
+ * Updates records in the database matching the specified criteria with the provided values.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * const updatedUser = await dsql.users.update({
86
+ * where: { id: "123" },
87
+ * set: { emailAddress: "new.email@example.com" }
88
+ * });
89
+ * ```
90
+ * @param args The arguments for updating records, including the criteria for selecting records and the values to be updated.
91
+ * @returns An executable query that can be awaited to retrieve the updated record.
92
+ */
93
+ update(args) {
94
+ const request = this._normalizer.normalizeUpdate(this._table, args, "one");
95
+ const operation = this._ctx.operations.createUpdateOperation(this._table, request);
96
+ return new ExecutableQuery(operation, this._ctx.session);
97
+ }
98
+ /**
99
+ * Deletes records from the database matching the specified criteria.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const deletedUser = await dsql.users.delete({
104
+ * where: { id: "123" }
105
+ * return: {
106
+ * id: true,
107
+ * name: true
108
+ * }
109
+ * });
110
+ * ```
111
+ * @notes
112
+ * * The `where` clause is required to ensure that the operation is deterministic and does not accidentally delete unintended records.
113
+ *
114
+ * @param args The arguments for deleting records, including the criteria for selecting records to delete.
115
+ * @returns An executable query that can be awaited to retrieve the deleted record.
116
+ */
117
+ delete(args) {
118
+ const request = this._normalizer.normalizeDelete(this._table, args, "one");
119
+ const operation = this._ctx.operations.createDeleteOperation(this._table, request);
120
+ return new ExecutableQuery(operation, this._ctx.session);
121
+ }
122
+ }
123
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client/model/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,eAAe,GAIhB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,OAAO,WAAW;IAML,IAAI,CAAgC;IACpC,MAAM,CAAS;IACf,WAAW,CAAiC;IAE7D,YAAY,GAAkC,EAAE,KAAa;QAC3D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAc,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IAEI,OAAO,CACZ,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;OAaG;IAEI,QAAQ,CACb,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IAEI,MAAM,CACX,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;OAYG;IAEI,MAAM,CACX,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IAEI,MAAM,CACX,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { TypedObject } from "@dsqlbase/core/utils";
2
+ import { AnyTable, DefinitionSchema, DeleteOperationArgs, ExecutionContext, InsertOperationArgs, OperationMode, OperationRequest, Schema, SelectOperationArgs, UpdateOperationArgs } from "@dsqlbase/core";
3
+ import { CreateArgs, DeleteArgs, QueryArgs, UpdateArgs } from "./base.js";
4
+ export declare class RequestNormalizer<TDefinition extends DefinitionSchema> implements TypedObject<Schema<TDefinition>> {
5
+ readonly __type: Schema<TDefinition>;
6
+ private readonly _ctx;
7
+ constructor(context: ExecutionContext);
8
+ private _getWhereExpression;
9
+ private _getSelectionEntries;
10
+ private _getOrderByEntries;
11
+ private _getJoinEntries;
12
+ private _getMutationEntries;
13
+ private _getSelectArgs;
14
+ normalizeSelect<TTable extends AnyTable, TArgs extends QueryArgs<TTable, this["__type"]>, TMode extends OperationMode>(table: TTable, args: TArgs, mode: TMode): OperationRequest<SelectOperationArgs, TMode>;
15
+ normalizeInsert<TTable extends AnyTable, TArgs extends CreateArgs<TTable>, TMode extends OperationMode>(table: TTable, args: TArgs, mode: TMode): OperationRequest<InsertOperationArgs, TMode>;
16
+ normalizeUpdate<TTable extends AnyTable, TArgs extends UpdateArgs<TTable>, TMode extends OperationMode>(table: TTable, args: TArgs, mode: TMode): OperationRequest<UpdateOperationArgs, TMode>;
17
+ normalizeDelete<TTable extends AnyTable, TArgs extends DeleteArgs<TTable>, TMode extends OperationMode>(table: TTable, args: TArgs, mode: TMode): OperationRequest<DeleteOperationArgs, TMode>;
18
+ }
19
+ //# sourceMappingURL=normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../../../src/client/model/normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAGhB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,MAAM,EACN,mBAAmB,EAInB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,UAAU,EACV,UAAU,EAKV,SAAS,EACT,UAAU,EAGX,MAAM,WAAW,CAAC;AAEnB,qBAAa,iBAAiB,CAAC,WAAW,SAAS,gBAAgB,CAAE,YAAW,WAAW,CACzF,MAAM,CAAC,WAAW,CAAC,CACpB;IACC,SAAiB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,OAAO,EAAE,gBAAgB;IAIrC,OAAO,CAAC,mBAAmB;IAiI3B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;IAoBf,eAAe,CACpB,MAAM,SAAS,QAAQ,EACvB,KAAK,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC/C,KAAK,SAAS,aAAa,EAC3B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAOjF,eAAe,CACpB,MAAM,SAAS,QAAQ,EACvB,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAChC,KAAK,SAAS,aAAa,EAC3B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAajF,eAAe,CACpB,MAAM,SAAS,QAAQ,EACvB,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAChC,KAAK,SAAS,aAAa,EAC3B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAejF,eAAe,CACpB,MAAM,SAAS,QAAQ,EACvB,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,EAChC,KAAK,SAAS,aAAa,EAC3B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC;CAYzF"}
@@ -0,0 +1,221 @@
1
+ import { sql, } from "@dsqlbase/core";
2
+ import { isFilterType, } from "./base.js";
3
+ export class RequestNormalizer {
4
+ _ctx;
5
+ constructor(context) {
6
+ this._ctx = context;
7
+ }
8
+ _getWhereExpression(table, where) {
9
+ if (!where) {
10
+ return undefined;
11
+ }
12
+ const expressions = [];
13
+ for (const [fieldName, condition] of Object.entries(where)) {
14
+ if (fieldName === "and" && Array.isArray(condition)) {
15
+ const exp = sql.and(condition
16
+ .map((expr) => this._getWhereExpression(table, expr))
17
+ .filter(Boolean));
18
+ expressions.push(sql.wrap(exp));
19
+ continue;
20
+ }
21
+ if (fieldName === "or" && Array.isArray(condition)) {
22
+ const exp = sql.or(condition
23
+ .map((expr) => this._getWhereExpression(table, expr))
24
+ .filter(Boolean));
25
+ expressions.push(sql.wrap(exp));
26
+ continue;
27
+ }
28
+ if (fieldName === "not" &&
29
+ typeof condition === "object" &&
30
+ condition !== null &&
31
+ !Array.isArray(condition)) {
32
+ const shouldWrapNot = Object.keys(condition).length > 1;
33
+ const expr = this._getWhereExpression(table, condition);
34
+ if (expr) {
35
+ expressions.push(shouldWrapNot ? sql.wrap(sql.not(expr)) : sql.not(expr));
36
+ }
37
+ continue;
38
+ }
39
+ const column = table.getColumn(fieldName);
40
+ if (!column) {
41
+ throw new Error(`Invalid field "${fieldName}" in where clause for table "${table.name}".`);
42
+ }
43
+ if (isFilterType(condition, "eq")) {
44
+ expressions.push(sql.eq(column, condition.eq));
45
+ continue;
46
+ }
47
+ if (isFilterType(condition, "neq")) {
48
+ expressions.push(sql.ne(column, condition.neq));
49
+ continue;
50
+ }
51
+ if (isFilterType(condition, "gt")) {
52
+ expressions.push(sql.gt(column, condition.gt));
53
+ continue;
54
+ }
55
+ if (isFilterType(condition, "gte")) {
56
+ expressions.push(sql.gte(column, condition.gte));
57
+ continue;
58
+ }
59
+ if (isFilterType(condition, "lt")) {
60
+ expressions.push(sql.lt(column, condition.lt));
61
+ continue;
62
+ }
63
+ if (isFilterType(condition, "lte")) {
64
+ expressions.push(sql.lte(column, condition.lte));
65
+ continue;
66
+ }
67
+ if (isFilterType(condition, "in")) {
68
+ expressions.push(sql.in(column, condition.in));
69
+ continue;
70
+ }
71
+ if (isFilterType(condition, "between")) {
72
+ expressions.push(sql `${column} BETWEEN ${sql.param(condition.between[0])} AND ${sql.param(condition.between[1])}`);
73
+ continue;
74
+ }
75
+ if (isFilterType(condition, "exists")) {
76
+ if (condition.exists) {
77
+ expressions.push(sql.isNotNull(column));
78
+ }
79
+ else {
80
+ expressions.push(sql.isNull(column));
81
+ }
82
+ continue;
83
+ }
84
+ if (isFilterType(condition, "beginsWith")) {
85
+ expressions.push(sql.like(column, `${condition.beginsWith}%`));
86
+ continue;
87
+ }
88
+ if (isFilterType(condition, "endsWith")) {
89
+ expressions.push(sql.like(column, `%${condition.endsWith}`));
90
+ continue;
91
+ }
92
+ if (isFilterType(condition, "contains")) {
93
+ expressions.push(sql.like(column, `%${condition.contains}%`));
94
+ continue;
95
+ }
96
+ expressions.push(sql.eq(column, condition));
97
+ }
98
+ return sql.and(expressions);
99
+ }
100
+ _getSelectionEntries(table, selection) {
101
+ const entries = [];
102
+ if (!selection || typeof selection === "boolean") {
103
+ return entries;
104
+ }
105
+ for (const [fieldName, isSelected] of Object.entries(selection)) {
106
+ if (isSelected) {
107
+ const column = table.getColumn(fieldName);
108
+ if (!column) {
109
+ throw new Error(`Invalid field "${fieldName}" in selection for table "${table.name}".`);
110
+ }
111
+ entries.push([fieldName, column]);
112
+ }
113
+ }
114
+ return entries;
115
+ }
116
+ _getOrderByEntries(table, orderBy) {
117
+ if (!orderBy) {
118
+ return undefined;
119
+ }
120
+ const entries = [];
121
+ for (const [fieldName, direction] of Object.entries(orderBy)) {
122
+ const column = table.getColumn(fieldName);
123
+ if (!column) {
124
+ throw new Error(`Invalid field "${fieldName}" in orderBy for table "${table.name}".`);
125
+ }
126
+ if (direction === "asc") {
127
+ entries.push(sql `${column} ASC`);
128
+ }
129
+ else if (direction === "desc") {
130
+ entries.push(sql `${column} DESC`);
131
+ }
132
+ }
133
+ return entries;
134
+ }
135
+ _getJoinEntries(table, join) {
136
+ const entries = [];
137
+ if (!join || Object.keys(join).length === 0) {
138
+ return undefined;
139
+ }
140
+ for (const [fieldName, query] of Object.entries(join)) {
141
+ if (query === null || query === undefined || (typeof query === "boolean" && !query)) {
142
+ continue;
143
+ }
144
+ const targetTable = this._ctx.schema.getRelationTarget(table.name, fieldName);
145
+ if (!targetTable) {
146
+ throw new Error(`Relation "${fieldName}" in table "${table.name}" does not have a valid target table.`);
147
+ }
148
+ const params = this._getSelectArgs(targetTable, query === true ? {} : query);
149
+ entries.push([fieldName, params]);
150
+ }
151
+ return entries;
152
+ }
153
+ _getMutationEntries(table, values) {
154
+ const entries = [];
155
+ for (const [fieldName, value] of Object.entries(values)) {
156
+ const column = table.getColumn(fieldName);
157
+ if (!column) {
158
+ throw new Error(`Invalid field "${fieldName}" in update values for table "${table.name}".`);
159
+ }
160
+ entries.push([fieldName, value]);
161
+ }
162
+ return entries;
163
+ }
164
+ _getSelectArgs(table, args) {
165
+ const selection = this._getSelectionEntries(table, args.select);
166
+ const where = this._getWhereExpression(table, args.where);
167
+ const join = this._getJoinEntries(table, args.join);
168
+ const orderBy = this._getOrderByEntries(table, args.orderBy);
169
+ return {
170
+ select: selection,
171
+ where,
172
+ join,
173
+ orderBy,
174
+ distinct: args.distinct,
175
+ limit: args.limit,
176
+ offset: args.offset,
177
+ };
178
+ }
179
+ normalizeSelect(table, args, mode) {
180
+ return {
181
+ mode,
182
+ args: this._getSelectArgs(table, args),
183
+ };
184
+ }
185
+ normalizeInsert(table, args, mode) {
186
+ const values = this._getMutationEntries(table, args.data);
187
+ const returning = this._getSelectionEntries(table, args.return);
188
+ return {
189
+ mode,
190
+ args: {
191
+ data: [values],
192
+ return: returning,
193
+ },
194
+ };
195
+ }
196
+ normalizeUpdate(table, args, mode) {
197
+ const values = this._getMutationEntries(table, args.set);
198
+ const where = this._getWhereExpression(table, args.where);
199
+ const returning = this._getSelectionEntries(table, args.return);
200
+ return {
201
+ mode,
202
+ args: {
203
+ set: values,
204
+ where,
205
+ return: returning,
206
+ },
207
+ };
208
+ }
209
+ normalizeDelete(table, args, mode) {
210
+ const where = this._getWhereExpression(table, args.where);
211
+ const returning = this._getSelectionEntries(table, args.return);
212
+ return {
213
+ mode,
214
+ args: {
215
+ where,
216
+ return: returning,
217
+ },
218
+ };
219
+ }
220
+ }
221
+ //# sourceMappingURL=normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../../../src/client/model/normalizer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { sql, SQLQuery } from "@dsqlbase/core";
2
2
  export type { Session, SQLStatement } from "@dsqlbase/core";
3
- export { createClient, type ClientOptions, type DSQLClient } from "@dsqlbase/client";
3
+ export { createClient, type ClientOptions, type QueryClient } from "./client/index.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export { sql, SQLQuery } from "@dsqlbase/core";
2
- export { createClient } from "@dsqlbase/client";
2
+ export { createClient } from "./client/index.js";
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAuC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAwC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Session, SQLStatement } from "@dsqlbase/core";
2
+ import { ClientBase } from "pg";
3
+ export declare class PGSession implements Session {
4
+ private _client;
5
+ constructor(client: ClientBase);
6
+ execute<T = unknown>(query: SQLStatement): Promise<T[]>;
7
+ }
8
+ export declare function createPgSession(client: ClientBase): PGSession;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,qBAAa,SAAU,YAAW,OAAO;IACvC,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,UAAU;IAIxB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAI9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAE7D"}
@@ -0,0 +1,14 @@
1
+ export class PGSession {
2
+ _client;
3
+ constructor(client) {
4
+ this._client = client;
5
+ }
6
+ async execute(query) {
7
+ const result = await this._client.query(query.text, query.params);
8
+ return result.rows;
9
+ }
10
+ }
11
+ export function createPgSession(client) {
12
+ return new PGSession(client);
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pg/index.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IACZ,OAAO,CAAa;IAE5B,YAAY,MAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,KAAmB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAW,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Session, SQLStatement } from "@dsqlbase/core";
2
+ import { PGlite } from "@electric-sql/pglite";
3
+ export declare class PgLiteSession implements Session {
4
+ private _client;
5
+ constructor(client: PGlite);
6
+ execute<T = unknown>(query: SQLStatement): Promise<T[]>;
7
+ }
8
+ export declare function createPgLiteSession(client: PGlite): PgLiteSession;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pglite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,qBAAa,aAAc,YAAW,OAAO;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAI9D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAEjE"}
@@ -0,0 +1,14 @@
1
+ export class PgLiteSession {
2
+ _client;
3
+ constructor(client) {
4
+ this._client = client;
5
+ }
6
+ async execute(query) {
7
+ const result = await this._client.query(query.text, query.params);
8
+ return result.rows;
9
+ }
10
+ }
11
+ export function createPgLiteSession(client) {
12
+ return new PgLiteSession(client);
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pglite/index.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IAChB,OAAO,CAAS;IAExB,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,KAAmB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAW,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { ColumnConfig, ColumnDefinition } from "@dsqlbase/core";
2
+ /**
3
+ * Defines an `array` **runtime data type** column.
4
+ * #### Important Notes
5
+ *
6
+ * The column data type will be `text` in the database, and queries will use `string_to_array('1,2', ',')` at query execution time to handle array data.
7
+ *
8
+ * This means that while you can store any array of strings in this column, it will be stored as text and not as a native array type.
9
+ *
10
+ * The encoding and decoding functions will handle the conversion between JavaScript arrays and comma-separated strings.
11
+ *
12
+ * @param name Column name in database
13
+ * @returns Serializable column definition for an array column.
14
+ */
15
+ export declare function array<const TName extends string>(name: TName): ColumnDefinition<TName, ColumnConfig<string[], string>>;
16
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/schema/columns/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;;;;;;;;;GAYG;AAEH,wBAAgB,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,2DAQ5D"}
@@ -0,0 +1,24 @@
1
+ import { ColumnDefinition } from "@dsqlbase/core";
2
+ /**
3
+ * Defines an `array` **runtime data type** column.
4
+ * #### Important Notes
5
+ *
6
+ * The column data type will be `text` in the database, and queries will use `string_to_array('1,2', ',')` at query execution time to handle array data.
7
+ *
8
+ * This means that while you can store any array of strings in this column, it will be stored as text and not as a native array type.
9
+ *
10
+ * The encoding and decoding functions will handle the conversion between JavaScript arrays and comma-separated strings.
11
+ *
12
+ * @param name Column name in database
13
+ * @returns Serializable column definition for an array column.
14
+ */
15
+ export function array(name) {
16
+ return new ColumnDefinition(name, {
17
+ dataType: "text",
18
+ codec: {
19
+ encode: (value) => value.join(","),
20
+ decode: (value) => value.split(","),
21
+ },
22
+ });
23
+ }
24
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/schema/columns/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,KAAK,CAA6B,IAAW;IAC3D,OAAO,IAAI,gBAAgB,CAAwC,IAAI,EAAE;QACvE,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE;YACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;SACpC;KACF,CAAC,CAAC;AACL,CAAC"}