@neogroup/neorm 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 (161) hide show
  1. package/README.md +1019 -0
  2. package/dist/connection.d.ts +10 -0
  3. package/dist/connection.js +3 -0
  4. package/dist/connection.js.map +1 -0
  5. package/dist/data-connection.d.ts +24 -0
  6. package/dist/data-connection.js +99 -0
  7. package/dist/data-connection.js.map +1 -0
  8. package/dist/data-set.d.ts +3 -0
  9. package/dist/data-set.js +3 -0
  10. package/dist/data-set.js.map +1 -0
  11. package/dist/data-source.d.ts +23 -0
  12. package/dist/data-source.js +56 -0
  13. package/dist/data-source.js.map +1 -0
  14. package/dist/data-table.d.ts +19 -0
  15. package/dist/data-table.js +75 -0
  16. package/dist/data-table.js.map +1 -0
  17. package/dist/db.d.ts +57 -0
  18. package/dist/db.js +213 -0
  19. package/dist/db.js.map +1 -0
  20. package/dist/entities/decorators.d.ts +50 -0
  21. package/dist/entities/decorators.js +305 -0
  22. package/dist/entities/decorators.js.map +1 -0
  23. package/dist/entities/entity-query.d.ts +60 -0
  24. package/dist/entities/entity-query.js +305 -0
  25. package/dist/entities/entity-query.js.map +1 -0
  26. package/dist/entities/entity.d.ts +1 -0
  27. package/dist/entities/entity.js +3 -0
  28. package/dist/entities/entity.js.map +1 -0
  29. package/dist/entities/index.d.ts +4 -0
  30. package/dist/entities/index.js +20 -0
  31. package/dist/entities/index.js.map +1 -0
  32. package/dist/entities/relationship.d.ts +15 -0
  33. package/dist/entities/relationship.js +24 -0
  34. package/dist/entities/relationship.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.js +32 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/query/builders/default-query-builder.d.ts +87 -0
  39. package/dist/query/builders/default-query-builder.js +524 -0
  40. package/dist/query/builders/default-query-builder.js.map +1 -0
  41. package/dist/query/builders/index.d.ts +2 -0
  42. package/dist/query/builders/index.js +19 -0
  43. package/dist/query/builders/index.js.map +1 -0
  44. package/dist/query/builders/query-builder.d.ts +5 -0
  45. package/dist/query/builders/query-builder.js +7 -0
  46. package/dist/query/builders/query-builder.js.map +1 -0
  47. package/dist/query/conditions.d.ts +60 -0
  48. package/dist/query/conditions.js +142 -0
  49. package/dist/query/conditions.js.map +1 -0
  50. package/dist/query/delete-query.d.ts +8 -0
  51. package/dist/query/delete-query.js +17 -0
  52. package/dist/query/delete-query.js.map +1 -0
  53. package/dist/query/features/has-alias.d.ts +6 -0
  54. package/dist/query/features/has-alias.js +17 -0
  55. package/dist/query/features/has-alias.js.map +1 -0
  56. package/dist/query/features/has-distinct.d.ts +6 -0
  57. package/dist/query/features/has-distinct.js +20 -0
  58. package/dist/query/features/has-distinct.js.map +1 -0
  59. package/dist/query/features/has-field-values.d.ts +9 -0
  60. package/dist/query/features/has-field-values.js +27 -0
  61. package/dist/query/features/has-field-values.js.map +1 -0
  62. package/dist/query/features/has-group-by-fields.d.ts +7 -0
  63. package/dist/query/features/has-group-by-fields.js +21 -0
  64. package/dist/query/features/has-group-by-fields.js.map +1 -0
  65. package/dist/query/features/has-having-conditions.d.ts +13 -0
  66. package/dist/query/features/has-having-conditions.js +28 -0
  67. package/dist/query/features/has-having-conditions.js.map +1 -0
  68. package/dist/query/features/has-joins.d.ts +41 -0
  69. package/dist/query/features/has-joins.js +67 -0
  70. package/dist/query/features/has-joins.js.map +1 -0
  71. package/dist/query/features/has-limit.d.ts +6 -0
  72. package/dist/query/features/has-limit.js +20 -0
  73. package/dist/query/features/has-limit.js.map +1 -0
  74. package/dist/query/features/has-offset.d.ts +6 -0
  75. package/dist/query/features/has-offset.js +20 -0
  76. package/dist/query/features/has-offset.js.map +1 -0
  77. package/dist/query/features/has-order-by-fields.d.ts +15 -0
  78. package/dist/query/features/has-order-by-fields.js +38 -0
  79. package/dist/query/features/has-order-by-fields.js.map +1 -0
  80. package/dist/query/features/has-select-fields.d.ts +11 -0
  81. package/dist/query/features/has-select-fields.js +21 -0
  82. package/dist/query/features/has-select-fields.js.map +1 -0
  83. package/dist/query/features/has-table.d.ts +7 -0
  84. package/dist/query/features/has-table.js +20 -0
  85. package/dist/query/features/has-table.js.map +1 -0
  86. package/dist/query/features/has-unions.d.ts +13 -0
  87. package/dist/query/features/has-unions.js +21 -0
  88. package/dist/query/features/has-unions.js.map +1 -0
  89. package/dist/query/features/has-when.d.ts +3 -0
  90. package/dist/query/features/has-when.js +13 -0
  91. package/dist/query/features/has-when.js.map +1 -0
  92. package/dist/query/features/has-where-conditions.d.ts +35 -0
  93. package/dist/query/features/has-where-conditions.js +92 -0
  94. package/dist/query/features/has-where-conditions.js.map +1 -0
  95. package/dist/query/features/index.d.ts +14 -0
  96. package/dist/query/features/index.js +31 -0
  97. package/dist/query/features/index.js.map +1 -0
  98. package/dist/query/fields.d.ts +12 -0
  99. package/dist/query/fields.js +18 -0
  100. package/dist/query/fields.js.map +1 -0
  101. package/dist/query/index.d.ts +11 -0
  102. package/dist/query/index.js +28 -0
  103. package/dist/query/index.js.map +1 -0
  104. package/dist/query/insert-query.d.ts +8 -0
  105. package/dist/query/insert-query.js +17 -0
  106. package/dist/query/insert-query.js.map +1 -0
  107. package/dist/query/query.d.ts +2 -0
  108. package/dist/query/query.js +7 -0
  109. package/dist/query/query.js.map +1 -0
  110. package/dist/query/select-query.d.ts +9 -0
  111. package/dist/query/select-query.js +33 -0
  112. package/dist/query/select-query.js.map +1 -0
  113. package/dist/query/statement.d.ts +4 -0
  114. package/dist/query/statement.js +3 -0
  115. package/dist/query/statement.js.map +1 -0
  116. package/dist/query/table.d.ts +6 -0
  117. package/dist/query/table.js +3 -0
  118. package/dist/query/table.js.map +1 -0
  119. package/dist/query/update-query.d.ts +8 -0
  120. package/dist/query/update-query.js +17 -0
  121. package/dist/query/update-query.js.map +1 -0
  122. package/dist/sources/mysql/index.d.ts +3 -0
  123. package/dist/sources/mysql/index.js +20 -0
  124. package/dist/sources/mysql/index.js.map +1 -0
  125. package/dist/sources/mysql/mysql-connection.d.ts +14 -0
  126. package/dist/sources/mysql/mysql-connection.js +36 -0
  127. package/dist/sources/mysql/mysql-connection.js.map +1 -0
  128. package/dist/sources/mysql/mysql-data-source.d.ts +24 -0
  129. package/dist/sources/mysql/mysql-data-source.js +72 -0
  130. package/dist/sources/mysql/mysql-data-source.js.map +1 -0
  131. package/dist/sources/mysql/mysql-query-builder.d.ts +8 -0
  132. package/dist/sources/mysql/mysql-query-builder.js +28 -0
  133. package/dist/sources/mysql/mysql-query-builder.js.map +1 -0
  134. package/dist/sources/postgres/index.d.ts +2 -0
  135. package/dist/sources/postgres/index.js +19 -0
  136. package/dist/sources/postgres/index.js.map +1 -0
  137. package/dist/sources/postgres/postgres-connection.d.ts +13 -0
  138. package/dist/sources/postgres/postgres-connection.js +40 -0
  139. package/dist/sources/postgres/postgres-connection.js.map +1 -0
  140. package/dist/sources/postgres/postgres-data-source.d.ts +24 -0
  141. package/dist/sources/postgres/postgres-data-source.js +73 -0
  142. package/dist/sources/postgres/postgres-data-source.js.map +1 -0
  143. package/dist/sources/postgres/postgres-query-builder.d.ts +5 -0
  144. package/dist/sources/postgres/postgres-query-builder.js +13 -0
  145. package/dist/sources/postgres/postgres-query-builder.js.map +1 -0
  146. package/dist/sources/sqlite/index.d.ts +3 -0
  147. package/dist/sources/sqlite/index.js +20 -0
  148. package/dist/sources/sqlite/index.js.map +1 -0
  149. package/dist/sources/sqlite/sqlite-connection.d.ts +14 -0
  150. package/dist/sources/sqlite/sqlite-connection.js +37 -0
  151. package/dist/sources/sqlite/sqlite-connection.js.map +1 -0
  152. package/dist/sources/sqlite/sqlite-data-source.d.ts +11 -0
  153. package/dist/sources/sqlite/sqlite-data-source.js +34 -0
  154. package/dist/sources/sqlite/sqlite-data-source.js.map +1 -0
  155. package/dist/sources/sqlite/sqlite-query-builder.d.ts +6 -0
  156. package/dist/sources/sqlite/sqlite-query-builder.js +23 -0
  157. package/dist/sources/sqlite/sqlite-query-builder.js.map +1 -0
  158. package/dist/utilities.d.ts +2 -0
  159. package/dist/utilities.js +17 -0
  160. package/dist/utilities.js.map +1 -0
  161. package/package.json +56 -0
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityQuery = void 0;
4
+ const has_joins_1 = require("../query/features/has-joins");
5
+ /**
6
+ * Chainable query builder for Entities. Wraps DataTable and hydrates rows
7
+ * into typed Entity instances when a terminal method is called.
8
+ */
9
+ class EntityQuery {
10
+ constructor(entityClass, table) {
11
+ this._withs = [];
12
+ this._entityClass = entityClass;
13
+ this._table = table;
14
+ }
15
+ // ── Eager loading ────────────────────────────────────────────────────────────
16
+ with(relations, ...rest) {
17
+ const toAdd = Array.isArray(relations) ? relations : [relations, ...rest];
18
+ this._withs.push(...toAdd);
19
+ return this;
20
+ }
21
+ // ── Join relationships ───────────────────────────────────────────────────────
22
+ joinRelationship(relationName) {
23
+ return this._applyJoin(has_joins_1.JoinType.INNER_JOIN, relationName);
24
+ }
25
+ innerJoinRelationship(relationName) {
26
+ return this._applyJoin(has_joins_1.JoinType.INNER_JOIN, relationName);
27
+ }
28
+ leftJoinRelationship(relationName) {
29
+ return this._applyJoin(has_joins_1.JoinType.LEFT_JOIN, relationName);
30
+ }
31
+ _applyJoin(joinType, relationName) {
32
+ const rel = this._entityClass.relationships[relationName];
33
+ if (!rel) {
34
+ throw new Error(`Relationship "${relationName}" is not defined on ${this._entityClass.name}`);
35
+ }
36
+ const RelatedClass = rel.related();
37
+ const relatedTable = RelatedClass.table;
38
+ if (rel.type === 'hasOne' || rel.type === 'hasMany') {
39
+ // local table.localKey = related table.foreignKey
40
+ const sourceField = `${this._entityClass.table}.${rel.localKey}`;
41
+ const remoteField = `${relatedTable}.${rel.foreignKey}`;
42
+ this._table.join(joinType, relatedTable, sourceField, remoteField);
43
+ }
44
+ else if (rel.type === 'belongsTo') {
45
+ // local table.foreignKey = related table.localKey
46
+ const sourceField = `${this._entityClass.table}.${rel.foreignKey}`;
47
+ const remoteField = `${relatedTable}.${rel.localKey}`;
48
+ this._table.join(joinType, relatedTable, sourceField, remoteField);
49
+ }
50
+ else if (rel.type === 'hasOneThrough' || rel.type === 'hasManyThrough') {
51
+ // local → through → related
52
+ const ThroughClass = rel.through();
53
+ const throughTable = ThroughClass.table;
54
+ this._table.join(joinType, throughTable, `${this._entityClass.table}.${rel.localKey}`, `${throughTable}.${rel.throughForeignKey}`);
55
+ this._table.join(joinType, relatedTable, `${throughTable}.${rel.throughLocalKey}`, `${relatedTable}.${rel.foreignKey}`);
56
+ }
57
+ return this;
58
+ }
59
+ // ── Terminal methods ─────────────────────────────────────────────────────────
60
+ async get() {
61
+ const rows = await this._table.get();
62
+ const entities = rows.map((row) => this._entityClass.fromRow(row));
63
+ if (this._withs.length > 0) {
64
+ await this._loadRelations(entities, this._withs, this._entityClass);
65
+ }
66
+ return entities;
67
+ }
68
+ async first() {
69
+ const row = await this._table.first();
70
+ if (!row) {
71
+ return null;
72
+ }
73
+ const entity = this._entityClass.fromRow(row);
74
+ if (this._withs.length > 0) {
75
+ await this._loadRelations([entity], this._withs, this._entityClass);
76
+ }
77
+ return entity;
78
+ }
79
+ async find(id) {
80
+ const row = await this._table.where(this._entityClass.primaryKey, id).first();
81
+ if (!row) {
82
+ return null;
83
+ }
84
+ const entity = this._entityClass.fromRow(row);
85
+ if (this._withs.length > 0) {
86
+ await this._loadRelations([entity], this._withs, this._entityClass);
87
+ }
88
+ return entity;
89
+ }
90
+ // ── Eager-load implementation ────────────────────────────────────────────────
91
+ async _loadRelations(entities, relations, ParentClass) {
92
+ // Group by top-level relation name; accumulate nested paths
93
+ const groups = new Map();
94
+ for (const path of relations) {
95
+ const dot = path.indexOf('.');
96
+ const head = dot === -1 ? path : path.substring(0, dot);
97
+ const tail = dot === -1 ? null : path.substring(dot + 1);
98
+ if (!groups.has(head)) {
99
+ groups.set(head, []);
100
+ }
101
+ if (tail) {
102
+ groups.get(head).push(tail);
103
+ }
104
+ }
105
+ for (const [head, nested] of groups) {
106
+ const rel = ParentClass.relationships[head];
107
+ if (!rel) {
108
+ continue;
109
+ }
110
+ const RelatedClass = rel.related();
111
+ let relatedItems = [];
112
+ if (rel.type === 'hasOne' || rel.type === 'hasMany') {
113
+ const keys = [...new Set(entities.map((r) => r[rel.localKey]).filter((v) => v != null))];
114
+ if (keys.length === 0) {
115
+ continue;
116
+ }
117
+ relatedItems = await RelatedClass.whereIn(rel.foreignKey, keys).get();
118
+ // Build lookup: foreignKeyValue → items[]
119
+ const lookup = new Map();
120
+ relatedItems.forEach((item) => {
121
+ const k = item[rel.foreignKey];
122
+ if (!lookup.has(k)) {
123
+ lookup.set(k, []);
124
+ }
125
+ lookup.get(k).push(item);
126
+ });
127
+ entities.forEach((r) => {
128
+ var _a, _b;
129
+ const matched = (_a = lookup.get(r[rel.localKey])) !== null && _a !== void 0 ? _a : [];
130
+ r[head] = rel.type === 'hasOne' ? (_b = matched[0]) !== null && _b !== void 0 ? _b : null : matched;
131
+ });
132
+ }
133
+ else if (rel.type === 'belongsTo') {
134
+ const keys = [...new Set(entities.map((r) => r[rel.foreignKey]).filter((v) => v != null))];
135
+ if (keys.length === 0) {
136
+ continue;
137
+ }
138
+ relatedItems = await RelatedClass.whereIn(rel.localKey, keys).get();
139
+ // Build lookup: localKeyValue → item
140
+ const lookup = new Map();
141
+ relatedItems.forEach((item) => lookup.set(item[rel.localKey], item));
142
+ entities.forEach((r) => {
143
+ var _a;
144
+ r[head] = (_a = lookup.get(r[rel.foreignKey])) !== null && _a !== void 0 ? _a : null;
145
+ });
146
+ }
147
+ else if (rel.type === 'hasOneThrough' || rel.type === 'hasManyThrough') {
148
+ const ThroughClass = rel.through();
149
+ const localKeys = [...new Set(entities.map((r) => r[rel.localKey]).filter((v) => v != null))];
150
+ if (localKeys.length === 0) {
151
+ continue;
152
+ }
153
+ // Load through intermediates
154
+ const throughItems = await ThroughClass.whereIn(rel.throughForeignKey, localKeys).get();
155
+ const throughKeys = [
156
+ ...new Set(throughItems.map((t) => t[rel.throughLocalKey]).filter((v) => v != null))
157
+ ];
158
+ if (throughKeys.length === 0) {
159
+ continue;
160
+ }
161
+ // Map parent localKey → through items
162
+ const throughByParent = new Map();
163
+ throughItems.forEach((t) => {
164
+ const k = t[rel.throughForeignKey];
165
+ if (!throughByParent.has(k)) {
166
+ throughByParent.set(k, []);
167
+ }
168
+ throughByParent.get(k).push(t);
169
+ });
170
+ relatedItems = await RelatedClass.whereIn(rel.foreignKey, throughKeys).get();
171
+ // Map through localKey → related items
172
+ const relatedByThrough = new Map();
173
+ relatedItems.forEach((item) => {
174
+ const k = item[rel.foreignKey];
175
+ if (!relatedByThrough.has(k)) {
176
+ relatedByThrough.set(k, []);
177
+ }
178
+ relatedByThrough.get(k).push(item);
179
+ });
180
+ entities.forEach((r) => {
181
+ var _a, _b;
182
+ const throughs = (_a = throughByParent.get(r[rel.localKey])) !== null && _a !== void 0 ? _a : [];
183
+ const matched = [];
184
+ throughs.forEach((t) => {
185
+ var _a;
186
+ const items = (_a = relatedByThrough.get(t[rel.throughLocalKey])) !== null && _a !== void 0 ? _a : [];
187
+ matched.push(...items);
188
+ });
189
+ r[head] = rel.type === 'hasOneThrough' ? (_b = matched[0]) !== null && _b !== void 0 ? _b : null : matched;
190
+ });
191
+ }
192
+ // Recurse for nested dot-notation paths
193
+ if (nested.length > 0 && relatedItems.length > 0) {
194
+ await this._loadRelations(relatedItems, nested, RelatedClass);
195
+ }
196
+ }
197
+ }
198
+ where(...args) {
199
+ ;
200
+ this._table.where(...args);
201
+ return this;
202
+ }
203
+ whereIn(field, values) {
204
+ this._table.whereIn(field, values);
205
+ return this;
206
+ }
207
+ whereNotIn(field, values) {
208
+ this._table.whereNotIn(field, values);
209
+ return this;
210
+ }
211
+ whereBetween(field, range) {
212
+ this._table.whereBetween(field, range);
213
+ return this;
214
+ }
215
+ whereNotBetween(field, range) {
216
+ this._table.whereNotBetween(field, range);
217
+ return this;
218
+ }
219
+ whereNull(field) {
220
+ this._table.whereNull(field);
221
+ return this;
222
+ }
223
+ whereNotNull(field) {
224
+ this._table.whereNotNull(field);
225
+ return this;
226
+ }
227
+ whereLike(field, pattern) {
228
+ this._table.whereLike(field, pattern);
229
+ return this;
230
+ }
231
+ whereNotLike(field, pattern) {
232
+ this._table.whereNotLike(field, pattern);
233
+ return this;
234
+ }
235
+ whereColumn(...args) {
236
+ ;
237
+ this._table.whereColumn(...args);
238
+ return this;
239
+ }
240
+ orWhere(...args) {
241
+ ;
242
+ this._table.orWhere(...args);
243
+ return this;
244
+ }
245
+ orWhereIn(field, values) {
246
+ this._table.orWhereIn(field, values);
247
+ return this;
248
+ }
249
+ orWhereNotIn(field, values) {
250
+ this._table.orWhereNotIn(field, values);
251
+ return this;
252
+ }
253
+ orWhereBetween(field, range) {
254
+ this._table.orWhereBetween(field, range);
255
+ return this;
256
+ }
257
+ orWhereNotBetween(field, range) {
258
+ this._table.orWhereNotBetween(field, range);
259
+ return this;
260
+ }
261
+ orWhereNull(field) {
262
+ this._table.orWhereNull(field);
263
+ return this;
264
+ }
265
+ orWhereNotNull(field) {
266
+ this._table.orWhereNotNull(field);
267
+ return this;
268
+ }
269
+ orWhereLike(field, pattern) {
270
+ this._table.orWhereLike(field, pattern);
271
+ return this;
272
+ }
273
+ orWhereNotLike(field, pattern) {
274
+ this._table.orWhereNotLike(field, pattern);
275
+ return this;
276
+ }
277
+ select(...fields) {
278
+ ;
279
+ this._table.select(...fields);
280
+ return this;
281
+ }
282
+ orderBy(field, direction) {
283
+ this._table.orderBy(field, direction);
284
+ return this;
285
+ }
286
+ groupBy(...fields) {
287
+ ;
288
+ this._table.groupBy(...fields);
289
+ return this;
290
+ }
291
+ limit(value) {
292
+ this._table.setLimit(value);
293
+ return this;
294
+ }
295
+ offset(value) {
296
+ this._table.setOffset(value);
297
+ return this;
298
+ }
299
+ distinct() {
300
+ this._table.setDistinct(true);
301
+ return this;
302
+ }
303
+ }
304
+ exports.EntityQuery = EntityQuery;
305
+ //# sourceMappingURL=entity-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query.js","sourceRoot":"","sources":["../../src/entities/entity-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type CastType = 'number' | 'boolean' | 'string' | 'json' | 'date';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entities/entity.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './relationship';
2
+ export * from './entity-query';
3
+ export type { CastType } from './entity';
4
+ export * from './decorators';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./relationship"), exports);
18
+ __exportStar(require("./entity-query"), exports);
19
+ __exportStar(require("./decorators"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,iDAA8B;AAE9B,+CAA4B"}
@@ -0,0 +1,15 @@
1
+ export type RelationshipType = 'hasOne' | 'hasMany' | 'belongsTo' | 'hasOneThrough' | 'hasManyThrough';
2
+ export interface Relationship {
3
+ type: RelationshipType;
4
+ related: () => any;
5
+ foreignKey: string;
6
+ localKey: string;
7
+ through?: () => any;
8
+ throughForeignKey?: string;
9
+ throughLocalKey?: string;
10
+ }
11
+ export declare function hasOne(related: () => any, foreignKey: string, localKey?: string): Relationship;
12
+ export declare function hasMany(related: () => any, foreignKey: string, localKey?: string): Relationship;
13
+ export declare function belongsTo(related: () => any, foreignKey: string, localKey?: string): Relationship;
14
+ export declare function hasOneThrough(related: () => any, through: () => any, foreignKey: string, throughForeignKey: string, localKey?: string, throughLocalKey?: string): Relationship;
15
+ export declare function hasManyThrough(related: () => any, through: () => any, foreignKey: string, throughForeignKey: string, localKey?: string, throughLocalKey?: string): Relationship;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasManyThrough = exports.hasOneThrough = exports.belongsTo = exports.hasMany = exports.hasOne = void 0;
4
+ function hasOne(related, foreignKey, localKey = 'id') {
5
+ return { type: 'hasOne', related, foreignKey, localKey };
6
+ }
7
+ exports.hasOne = hasOne;
8
+ function hasMany(related, foreignKey, localKey = 'id') {
9
+ return { type: 'hasMany', related, foreignKey, localKey };
10
+ }
11
+ exports.hasMany = hasMany;
12
+ function belongsTo(related, foreignKey, localKey = 'id') {
13
+ return { type: 'belongsTo', related, foreignKey, localKey };
14
+ }
15
+ exports.belongsTo = belongsTo;
16
+ function hasOneThrough(related, through, foreignKey, throughForeignKey, localKey = 'id', throughLocalKey = 'id') {
17
+ return { type: 'hasOneThrough', related, through, foreignKey, localKey, throughForeignKey, throughLocalKey };
18
+ }
19
+ exports.hasOneThrough = hasOneThrough;
20
+ function hasManyThrough(related, through, foreignKey, throughForeignKey, localKey = 'id', throughLocalKey = 'id') {
21
+ return { type: 'hasManyThrough', related, through, foreignKey, localKey, throughForeignKey, throughLocalKey };
22
+ }
23
+ exports.hasManyThrough = hasManyThrough;
24
+ //# sourceMappingURL=relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/entities/relationship.ts"],"names":[],"mappings":";;;AAYA,SAAgB,MAAM,CAAC,OAAkB,EAAE,UAAkB,EAAE,WAAmB,IAAI;IACpF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAC1D,CAAC;AAFD,wBAEC;AAED,SAAgB,OAAO,CAAC,OAAkB,EAAE,UAAkB,EAAE,WAAmB,IAAI;IACrF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAC3D,CAAC;AAFD,0BAEC;AAED,SAAgB,SAAS,CAAC,OAAkB,EAAE,UAAkB,EAAE,WAAmB,IAAI;IACvF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAC7D,CAAC;AAFD,8BAEC;AAED,SAAgB,aAAa,CAC3B,OAAkB,EAClB,OAAkB,EAClB,UAAkB,EAClB,iBAAyB,EACzB,WAAmB,IAAI,EACvB,kBAA0B,IAAI;IAE9B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAA;AAC9G,CAAC;AATD,sCASC;AAED,SAAgB,cAAc,CAC5B,OAAkB,EAClB,OAAkB,EAClB,UAAkB,EAClB,iBAAyB,EACzB,WAAmB,IAAI,EACvB,kBAA0B,IAAI;IAE9B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAA;AAC/G,CAAC;AATD,wCASC"}
@@ -0,0 +1,10 @@
1
+ export * from './connection';
2
+ export * from './data-set';
3
+ export * from './data-source';
4
+ export * from './data-table';
5
+ export * from './db';
6
+ export * from './query';
7
+ export * from './entities';
8
+ export * from './sources/postgres';
9
+ export * from './sources/sqlite';
10
+ export * from './sources/mysql';
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./connection"), exports);
18
+ __exportStar(require("./data-set"), exports);
19
+ __exportStar(require("./data-source"), exports);
20
+ __exportStar(require("./data-table"), exports);
21
+ __exportStar(require("./db"), exports);
22
+ //Queries
23
+ __exportStar(require("./query"), exports);
24
+ //Entities
25
+ __exportStar(require("./entities"), exports);
26
+ //Postgres
27
+ __exportStar(require("./sources/postgres"), exports);
28
+ //Sqlite
29
+ __exportStar(require("./sources/sqlite"), exports);
30
+ //MySQL
31
+ __exportStar(require("./sources/mysql"), exports);
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,6CAA0B;AAC1B,gDAA6B;AAC7B,+CAA4B;AAC5B,uCAAoB;AACpB,SAAS;AACT,0CAAuB;AACvB,UAAU;AACV,6CAA0B;AAC1B,UAAU;AACV,qDAAkC;AAClC,QAAQ;AACR,mDAAgC;AAChC,OAAO;AACP,kDAA+B"}
@@ -0,0 +1,87 @@
1
+ import { Condition, ConditionGroup } from '../conditions';
2
+ import { DeleteQuery } from '../delete-query';
3
+ import { Join, OrderByField, SelectField } from '../features';
4
+ import { Field } from '../fields';
5
+ import { InsertQuery } from '../insert-query';
6
+ import { Query } from '../query';
7
+ import { SelectQuery } from '../select-query';
8
+ import { Statement } from '../statement';
9
+ import { Table } from '../table';
10
+ import { UpdateQuery } from '../update-query';
11
+ import { QueryBuilder } from './query-builder';
12
+ export declare class DefaultQueryBuilder extends QueryBuilder {
13
+ protected static readonly SPACE = " ";
14
+ protected static readonly COMMA = ",";
15
+ protected static readonly DOUBLE_QUOTES = "\"";
16
+ protected static readonly EQUALS = "=";
17
+ protected static readonly PARENTHESIS_START = "(";
18
+ protected static readonly PARENTHESIS_END = ")";
19
+ protected static readonly SELECT = "SELECT";
20
+ protected static readonly INSERT = "INSERT";
21
+ protected static readonly UPDATE = "UPDATE";
22
+ protected static readonly DELETE = "DELETE";
23
+ protected static readonly INTO = "INTO";
24
+ protected static readonly SET = "SET";
25
+ protected static readonly VALUES = "VALUES";
26
+ protected static readonly DISTINCT = "DISTINCT";
27
+ protected static readonly ALL = "*";
28
+ protected static readonly AS = "AS";
29
+ protected static readonly POINT = ".";
30
+ protected static readonly FROM = "FROM";
31
+ protected static readonly AND = "AND";
32
+ protected static readonly OR = "OR";
33
+ protected static readonly NULL = "NULL";
34
+ protected static readonly IS = "IS";
35
+ protected static readonly NOT = "NOT";
36
+ protected static readonly ON = "ON";
37
+ protected static readonly WHERE = "WHERE";
38
+ protected static readonly HAVING = "HAVING";
39
+ protected static readonly GROUP = "GROUP";
40
+ protected static readonly ORDER = "ORDER";
41
+ protected static readonly BY = "BY";
42
+ protected static readonly LIMIT = "LIMIT";
43
+ protected static readonly OFFSET = "OFFSET";
44
+ protected static readonly ASC = "ASC";
45
+ protected static readonly DESC = "DESC";
46
+ protected static readonly JOIN = "JOIN";
47
+ protected static readonly INNER = "INNER";
48
+ protected static readonly OUTER = "OUTER";
49
+ protected static readonly LEFT = "LEFT";
50
+ protected static readonly RIGHT = "RIGHT";
51
+ protected static readonly CROSS = "CROSS";
52
+ protected static readonly WILDCARD = "?";
53
+ protected static readonly UNION = "UNION";
54
+ protected static readonly BETWEEN = "BETWEEN";
55
+ buildQuery(query: Query): Statement;
56
+ protected buildSelectQuery(query: SelectQuery, statement: Statement): void;
57
+ protected buildLimitOffset(query: SelectQuery, statement: Statement): void;
58
+ protected buildInsertQuery(query: InsertQuery, statement: Statement): void;
59
+ protected buildUpdateQuery(query: UpdateQuery, statement: Statement): void;
60
+ protected buildDeleteQuery(query: DeleteQuery, statement: Statement): void;
61
+ /**
62
+ * Outputs a plain identifier (column name). Override in engine-specific
63
+ * subclasses to add quoting (e.g. backticks for MySQL).
64
+ */
65
+ protected buildFieldName(name: string, statement: Statement): void;
66
+ /**
67
+ * Parses and outputs a raw string field, supporting:
68
+ * - 'field' → plain identifier
69
+ * - 'table.field' → quoted table + field (engine-aware)
70
+ * - 'FUNC(field)' → function call, field parsed recursively
71
+ * - 'FUNC(table.field)' → function call with qualified field
72
+ * - Any string with spaces is treated as a raw SQL expression and
73
+ * passed through as-is (e.g. 'COUNT(*) AS total').
74
+ */
75
+ protected buildRawFieldString(raw: string, statement: Statement): void;
76
+ protected buildSelectField(field: SelectField, statement: Statement): void;
77
+ protected buildOrderByField(field: OrderByField, statement: Statement): void;
78
+ protected buildField(field: Field, statement: Statement): void;
79
+ protected buildCondition(condition: Condition, statement: Statement): void;
80
+ protected buildConditionGroup(conditionGroup: ConditionGroup, statement: Statement): void;
81
+ protected buildJoin(join: Join, statement: Statement): void;
82
+ protected buildTable(table: Table, statement: Statement): void;
83
+ protected buildValue(value: any, statement: Statement): void;
84
+ protected buildArrayValue(value: Array<any>, statement: Statement): void;
85
+ protected buildSingleValue(value: any, statement: Statement): void;
86
+ protected buildOperator(operator: string, statement: Statement): void;
87
+ }