linkgress-orm 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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/database/database-client.interface.d.ts +45 -0
  4. package/dist/database/database-client.interface.d.ts.map +1 -0
  5. package/dist/database/database-client.interface.js +20 -0
  6. package/dist/database/database-client.interface.js.map +1 -0
  7. package/dist/database/index.d.ts +5 -0
  8. package/dist/database/index.d.ts.map +1 -0
  9. package/dist/database/index.js +10 -0
  10. package/dist/database/index.js.map +1 -0
  11. package/dist/database/pg-client.d.ts +30 -0
  12. package/dist/database/pg-client.d.ts.map +1 -0
  13. package/dist/database/pg-client.js +76 -0
  14. package/dist/database/pg-client.js.map +1 -0
  15. package/dist/database/postgres-client.d.ts +44 -0
  16. package/dist/database/postgres-client.d.ts.map +1 -0
  17. package/dist/database/postgres-client.js +111 -0
  18. package/dist/database/postgres-client.js.map +1 -0
  19. package/dist/database/types.d.ts +200 -0
  20. package/dist/database/types.d.ts.map +1 -0
  21. package/dist/database/types.js +8 -0
  22. package/dist/database/types.js.map +1 -0
  23. package/dist/entity/base-entity.d.ts +21 -0
  24. package/dist/entity/base-entity.d.ts.map +1 -0
  25. package/dist/entity/base-entity.js +27 -0
  26. package/dist/entity/base-entity.js.map +1 -0
  27. package/dist/entity/db-column.d.ts +61 -0
  28. package/dist/entity/db-column.d.ts.map +1 -0
  29. package/dist/entity/db-column.js +35 -0
  30. package/dist/entity/db-column.js.map +1 -0
  31. package/dist/entity/db-context.d.ts +665 -0
  32. package/dist/entity/db-context.d.ts.map +1 -0
  33. package/dist/entity/db-context.js +1463 -0
  34. package/dist/entity/db-context.js.map +1 -0
  35. package/dist/entity/entity-base.d.ts +76 -0
  36. package/dist/entity/entity-base.d.ts.map +1 -0
  37. package/dist/entity/entity-base.js +42 -0
  38. package/dist/entity/entity-base.js.map +1 -0
  39. package/dist/entity/entity-builder.d.ts +171 -0
  40. package/dist/entity/entity-builder.d.ts.map +1 -0
  41. package/dist/entity/entity-builder.js +376 -0
  42. package/dist/entity/entity-builder.js.map +1 -0
  43. package/dist/entity/model-config.d.ts +18 -0
  44. package/dist/entity/model-config.d.ts.map +1 -0
  45. package/dist/entity/model-config.js +157 -0
  46. package/dist/entity/model-config.js.map +1 -0
  47. package/dist/index.d.ts +27 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +142 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/migration/db-schema-manager.d.ts +228 -0
  52. package/dist/migration/db-schema-manager.d.ts.map +1 -0
  53. package/dist/migration/db-schema-manager.js +1055 -0
  54. package/dist/migration/db-schema-manager.js.map +1 -0
  55. package/dist/migration/enum-migrator.d.ts +29 -0
  56. package/dist/migration/enum-migrator.d.ts.map +1 -0
  57. package/dist/migration/enum-migrator.js +137 -0
  58. package/dist/migration/enum-migrator.js.map +1 -0
  59. package/dist/query/collection-strategy.factory.d.ts +16 -0
  60. package/dist/query/collection-strategy.factory.d.ts.map +1 -0
  61. package/dist/query/collection-strategy.factory.js +37 -0
  62. package/dist/query/collection-strategy.factory.js.map +1 -0
  63. package/dist/query/collection-strategy.interface.d.ts +146 -0
  64. package/dist/query/collection-strategy.interface.d.ts.map +1 -0
  65. package/dist/query/collection-strategy.interface.js +3 -0
  66. package/dist/query/collection-strategy.interface.js.map +1 -0
  67. package/dist/query/conditions.d.ts +222 -0
  68. package/dist/query/conditions.d.ts.map +1 -0
  69. package/dist/query/conditions.js +446 -0
  70. package/dist/query/conditions.js.map +1 -0
  71. package/dist/query/cte-builder.d.ts +95 -0
  72. package/dist/query/cte-builder.d.ts.map +1 -0
  73. package/dist/query/cte-builder.js +172 -0
  74. package/dist/query/cte-builder.js.map +1 -0
  75. package/dist/query/grouped-query.d.ts +186 -0
  76. package/dist/query/grouped-query.d.ts.map +1 -0
  77. package/dist/query/grouped-query.js +588 -0
  78. package/dist/query/grouped-query.js.map +1 -0
  79. package/dist/query/join-builder.d.ts +106 -0
  80. package/dist/query/join-builder.d.ts.map +1 -0
  81. package/dist/query/join-builder.js +275 -0
  82. package/dist/query/join-builder.js.map +1 -0
  83. package/dist/query/query-builder.d.ts +543 -0
  84. package/dist/query/query-builder.d.ts.map +1 -0
  85. package/dist/query/query-builder.js +2649 -0
  86. package/dist/query/query-builder.js.map +1 -0
  87. package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
  88. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
  89. package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
  90. package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
  91. package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
  92. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
  93. package/dist/query/strategies/temptable-collection-strategy.js +456 -0
  94. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
  95. package/dist/query/subquery.d.ts +152 -0
  96. package/dist/query/subquery.d.ts.map +1 -0
  97. package/dist/query/subquery.js +206 -0
  98. package/dist/query/subquery.js.map +1 -0
  99. package/dist/schema/column-builder.d.ts +127 -0
  100. package/dist/schema/column-builder.d.ts.map +1 -0
  101. package/dist/schema/column-builder.js +184 -0
  102. package/dist/schema/column-builder.js.map +1 -0
  103. package/dist/schema/inference.d.ts +26 -0
  104. package/dist/schema/inference.d.ts.map +1 -0
  105. package/dist/schema/inference.js +3 -0
  106. package/dist/schema/inference.js.map +1 -0
  107. package/dist/schema/navigation.d.ts +215 -0
  108. package/dist/schema/navigation.d.ts.map +1 -0
  109. package/dist/schema/navigation.js +233 -0
  110. package/dist/schema/navigation.js.map +1 -0
  111. package/dist/schema/row-type.d.ts +26 -0
  112. package/dist/schema/row-type.d.ts.map +1 -0
  113. package/dist/schema/row-type.js +3 -0
  114. package/dist/schema/row-type.js.map +1 -0
  115. package/dist/schema/sequence-builder.d.ts +87 -0
  116. package/dist/schema/sequence-builder.d.ts.map +1 -0
  117. package/dist/schema/sequence-builder.js +123 -0
  118. package/dist/schema/sequence-builder.js.map +1 -0
  119. package/dist/schema/table-builder.d.ts +122 -0
  120. package/dist/schema/table-builder.d.ts.map +1 -0
  121. package/dist/schema/table-builder.js +132 -0
  122. package/dist/schema/table-builder.js.map +1 -0
  123. package/dist/schema/typed-schema.d.ts +22 -0
  124. package/dist/schema/typed-schema.d.ts.map +1 -0
  125. package/dist/schema/typed-schema.js +28 -0
  126. package/dist/schema/typed-schema.js.map +1 -0
  127. package/dist/types/column-types.d.ts +20 -0
  128. package/dist/types/column-types.d.ts.map +1 -0
  129. package/dist/types/column-types.js +14 -0
  130. package/dist/types/column-types.js.map +1 -0
  131. package/dist/types/custom-types.d.ts +85 -0
  132. package/dist/types/custom-types.d.ts.map +1 -0
  133. package/dist/types/custom-types.js +132 -0
  134. package/dist/types/custom-types.js.map +1 -0
  135. package/dist/types/enum-builder.d.ts +31 -0
  136. package/dist/types/enum-builder.d.ts.map +1 -0
  137. package/dist/types/enum-builder.js +46 -0
  138. package/dist/types/enum-builder.js.map +1 -0
  139. package/dist/types/metadata.d.ts +67 -0
  140. package/dist/types/metadata.d.ts.map +1 -0
  141. package/dist/types/metadata.js +57 -0
  142. package/dist/types/metadata.js.map +1 -0
  143. package/dist/types/type-mapper.d.ts +49 -0
  144. package/dist/types/type-mapper.d.ts.map +1 -0
  145. package/dist/types/type-mapper.js +49 -0
  146. package/dist/types/type-mapper.js.map +1 -0
  147. package/package.json +77 -0
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityPropertyConfigBuilder = exports.EntityConfigBuilder = exports.EntityNavigationBuilder = exports.HasOneNavigationBuilder = exports.HasManyNavigationBuilder = exports.EntityPropertyBuilder = void 0;
4
+ const entity_base_1 = require("./entity-base");
5
+ /**
6
+ * Fluent API for configuring entity properties
7
+ */
8
+ class EntityPropertyBuilder {
9
+ constructor(entityClass, propertyKey, columnBuilder) {
10
+ this.entityClass = entityClass;
11
+ this.propertyKey = propertyKey;
12
+ this.columnBuilder = columnBuilder;
13
+ }
14
+ /**
15
+ * Set the database column name
16
+ */
17
+ hasColumnName(name) {
18
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
19
+ const propMetadata = metadata.properties.get(this.propertyKey) || {
20
+ propertyKey: this.propertyKey,
21
+ columnName: name,
22
+ columnBuilder: this.columnBuilder,
23
+ };
24
+ propMetadata.columnName = name;
25
+ metadata.properties.set(this.propertyKey, propMetadata);
26
+ return this;
27
+ }
28
+ /**
29
+ * Mark as primary key
30
+ */
31
+ isPrimaryKey() {
32
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
33
+ const propMetadata = metadata.properties.get(this.propertyKey);
34
+ propMetadata.isPrimaryKey = true;
35
+ metadata.properties.set(this.propertyKey, propMetadata);
36
+ // Also mark the column builder as primary key
37
+ this.columnBuilder.primaryKey();
38
+ return this;
39
+ }
40
+ /**
41
+ * Mark as required
42
+ */
43
+ isRequired() {
44
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
45
+ const propMetadata = metadata.properties.get(this.propertyKey);
46
+ propMetadata.isRequired = true;
47
+ metadata.properties.set(this.propertyKey, propMetadata);
48
+ // Also mark the column builder as not null
49
+ this.columnBuilder.notNull();
50
+ return this;
51
+ }
52
+ /**
53
+ * Set default value
54
+ */
55
+ hasDefaultValue(value) {
56
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
57
+ const propMetadata = metadata.properties.get(this.propertyKey);
58
+ propMetadata.defaultValue = value;
59
+ metadata.properties.set(this.propertyKey, propMetadata);
60
+ // Also set the default on the column builder
61
+ this.columnBuilder.default(value);
62
+ return this;
63
+ }
64
+ /**
65
+ * Mark as unique
66
+ */
67
+ isUnique() {
68
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
69
+ const propMetadata = metadata.properties.get(this.propertyKey);
70
+ propMetadata.isUnique = true;
71
+ metadata.properties.set(this.propertyKey, propMetadata);
72
+ // Also mark the column builder as unique
73
+ this.columnBuilder.unique();
74
+ return this;
75
+ }
76
+ /**
77
+ * Set custom type mapper for bidirectional transformation
78
+ */
79
+ hasCustomMapper(mapper) {
80
+ // Apply mapper to column builder
81
+ this.columnBuilder.mapWith(mapper);
82
+ return this;
83
+ }
84
+ }
85
+ exports.EntityPropertyBuilder = EntityPropertyBuilder;
86
+ /**
87
+ * Base navigation builder with shared functionality
88
+ */
89
+ class BaseNavigationBuilder {
90
+ constructor(entityClass, propertyKey, targetEntity, relationType) {
91
+ this.entityClass = entityClass;
92
+ this.propertyKey = propertyKey;
93
+ this.targetEntity = targetEntity;
94
+ this.relationType = relationType;
95
+ }
96
+ /**
97
+ * Extract property names from selector (supports single or multiple columns)
98
+ */
99
+ extractPropertyNamesFromSelector(selector) {
100
+ // Create a proxy to capture property accesses
101
+ const propertyNames = [];
102
+ const captureProxy = new Proxy({}, {
103
+ get: (_, prop) => {
104
+ if (typeof prop === 'string' && prop !== 'constructor') {
105
+ propertyNames.push(prop);
106
+ }
107
+ return captureProxy; // Return proxy for chaining
108
+ }
109
+ });
110
+ try {
111
+ const result = selector(captureProxy);
112
+ // If result is an array, it means multiple properties were captured
113
+ if (Array.isArray(result)) {
114
+ // Properties were already captured during the proxy access
115
+ return propertyNames;
116
+ }
117
+ // Single property case
118
+ return propertyNames;
119
+ }
120
+ catch (e) {
121
+ // Fallback to regex parsing if proxy approach fails
122
+ const selectorStr = selector.toString();
123
+ const match = selectorStr.match(/\.([a-zA-Z_$][a-zA-Z0-9_$]*)/);
124
+ if (!match) {
125
+ throw new Error('Could not extract property name from selector');
126
+ }
127
+ return [match[1]];
128
+ }
129
+ }
130
+ setForeignKeyMetadata(foreignKeyNames) {
131
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
132
+ const navMetadata = {
133
+ propertyKey: this.propertyKey,
134
+ targetEntity: this.targetEntity,
135
+ relationType: this.relationType,
136
+ foreignKey: foreignKeyNames.length === 1 ? foreignKeyNames[0] : foreignKeyNames.join(','),
137
+ principalKey: '', // Will be set by withPrincipalKey
138
+ };
139
+ metadata.navigations.set(this.propertyKey, navMetadata);
140
+ }
141
+ setPrincipalKeyMetadata(principalKeyNames) {
142
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
143
+ const navMetadata = metadata.navigations.get(this.propertyKey);
144
+ navMetadata.principalKey = principalKeyNames.length === 1 ? principalKeyNames[0] : principalKeyNames.join(',');
145
+ metadata.navigations.set(this.propertyKey, navMetadata);
146
+ }
147
+ /**
148
+ * Mark navigation as required
149
+ */
150
+ isRequired() {
151
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
152
+ const navMetadata = metadata.navigations.get(this.propertyKey);
153
+ navMetadata.isRequired = true;
154
+ metadata.navigations.set(this.propertyKey, navMetadata);
155
+ return this;
156
+ }
157
+ /**
158
+ * Specify the ON DELETE action for the foreign key constraint
159
+ */
160
+ onDelete(action) {
161
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
162
+ const navMetadata = metadata.navigations.get(this.propertyKey);
163
+ navMetadata.onDelete = action;
164
+ metadata.navigations.set(this.propertyKey, navMetadata);
165
+ return this;
166
+ }
167
+ /**
168
+ * Specify the ON UPDATE action for the foreign key constraint
169
+ */
170
+ onUpdate(action) {
171
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
172
+ const navMetadata = metadata.navigations.get(this.propertyKey);
173
+ navMetadata.onUpdate = action;
174
+ metadata.navigations.set(this.propertyKey, navMetadata);
175
+ return this;
176
+ }
177
+ /**
178
+ * Specify a custom name for the foreign key constraint
179
+ */
180
+ hasDbName(name) {
181
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
182
+ const navMetadata = metadata.navigations.get(this.propertyKey);
183
+ navMetadata.constraintName = name;
184
+ metadata.navigations.set(this.propertyKey, navMetadata);
185
+ return this;
186
+ }
187
+ }
188
+ /**
189
+ * Navigation builder for hasMany relationships (one-to-many)
190
+ * Foreign key is on the target entity (many side)
191
+ * Principal key is on the source entity (one side)
192
+ */
193
+ class HasManyNavigationBuilder extends BaseNavigationBuilder {
194
+ /**
195
+ * Specify the foreign key on the target entity (many side)
196
+ * Supports single column: p => p.userId
197
+ * Supports multiple columns: p => [p.userId, p.type]
198
+ * Supports SQL fragments: p => sql`...`
199
+ */
200
+ withForeignKey(foreignKey) {
201
+ const foreignKeyNames = this.extractPropertyNamesFromSelector(foreignKey);
202
+ this.setForeignKeyMetadata(foreignKeyNames);
203
+ return this;
204
+ }
205
+ /**
206
+ * Specify the principal key on the source entity (one side)
207
+ * Supports single column: u => u.id
208
+ * Supports multiple columns: u => [u.id, u.type]
209
+ * Supports SQL fragments: u => sql`...`
210
+ */
211
+ withPrincipalKey(principalKey) {
212
+ const principalKeyNames = this.extractPropertyNamesFromSelector(principalKey);
213
+ this.setPrincipalKeyMetadata(principalKeyNames);
214
+ return this;
215
+ }
216
+ }
217
+ exports.HasManyNavigationBuilder = HasManyNavigationBuilder;
218
+ /**
219
+ * Navigation builder for hasOne relationships (many-to-one or one-to-one)
220
+ * Foreign key is on the source entity
221
+ * Principal key is on the target entity
222
+ */
223
+ class HasOneNavigationBuilder extends BaseNavigationBuilder {
224
+ /**
225
+ * Specify the foreign key on the source entity
226
+ * Supports single column: p => p.userId
227
+ * Supports multiple columns: p => [p.userId, p.type]
228
+ * Supports SQL fragments: p => sql`...`
229
+ */
230
+ withForeignKey(foreignKey) {
231
+ const foreignKeyNames = this.extractPropertyNamesFromSelector(foreignKey);
232
+ this.setForeignKeyMetadata(foreignKeyNames);
233
+ return this;
234
+ }
235
+ /**
236
+ * Specify the principal key on the target entity
237
+ * Supports single column: u => u.id
238
+ * Supports multiple columns: u => [u.id, u.type]
239
+ * Supports SQL fragments: u => sql`...`
240
+ */
241
+ withPrincipalKey(principalKey) {
242
+ const principalKeyNames = this.extractPropertyNamesFromSelector(principalKey);
243
+ this.setPrincipalKeyMetadata(principalKeyNames);
244
+ return this;
245
+ }
246
+ }
247
+ exports.HasOneNavigationBuilder = HasOneNavigationBuilder;
248
+ /**
249
+ * Legacy navigation builder for backward compatibility
250
+ * @deprecated Use HasManyNavigationBuilder or HasOneNavigationBuilder
251
+ */
252
+ class EntityNavigationBuilder extends BaseNavigationBuilder {
253
+ withForeignKey(foreignKey) {
254
+ const foreignKeyNames = this.extractPropertyNamesFromSelector(foreignKey);
255
+ this.setForeignKeyMetadata(foreignKeyNames);
256
+ return this;
257
+ }
258
+ withPrincipalKey(principalKey) {
259
+ const principalKeyNames = this.extractPropertyNamesFromSelector(principalKey);
260
+ this.setPrincipalKeyMetadata(principalKeyNames);
261
+ return this;
262
+ }
263
+ }
264
+ exports.EntityNavigationBuilder = EntityNavigationBuilder;
265
+ /**
266
+ * Fluent API for configuring an entity
267
+ */
268
+ class EntityConfigBuilder {
269
+ constructor(entityClass) {
270
+ this.entityClass = entityClass;
271
+ }
272
+ /**
273
+ * Set the table name
274
+ */
275
+ toTable(name) {
276
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
277
+ metadata.tableName = name;
278
+ return this;
279
+ }
280
+ /**
281
+ * Set the schema name
282
+ */
283
+ toSchema(name) {
284
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
285
+ metadata.schemaName = name;
286
+ return this;
287
+ }
288
+ /**
289
+ * Configure a property
290
+ */
291
+ property(selector) {
292
+ const propertyKey = this.extractPropertyName(selector);
293
+ return new EntityPropertyConfigBuilder(this.entityClass, propertyKey);
294
+ }
295
+ /**
296
+ * Configure a one-to-many navigation
297
+ */
298
+ hasMany(selector, targetEntity) {
299
+ const propertyKey = this.extractPropertyName(selector);
300
+ return new HasManyNavigationBuilder(this.entityClass, propertyKey, targetEntity, 'many');
301
+ }
302
+ /**
303
+ * Configure a many-to-one or one-to-one navigation
304
+ */
305
+ hasOne(selector, targetEntity) {
306
+ const propertyKey = this.extractPropertyName(selector);
307
+ return new HasOneNavigationBuilder(this.entityClass, propertyKey, targetEntity, 'one');
308
+ }
309
+ /**
310
+ * Configure an index
311
+ */
312
+ hasIndex(indexName, selector) {
313
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
314
+ // Create a temporary entity to extract column names
315
+ const tempEntity = {};
316
+ const columnNames = [];
317
+ // Build a proxy to capture property accesses
318
+ const proxy = new Proxy(tempEntity, {
319
+ get: (target, prop) => {
320
+ if (typeof prop === 'string') {
321
+ // Find the column name for this property
322
+ const propMetadata = metadata.properties.get(prop);
323
+ if (propMetadata) {
324
+ columnNames.push(propMetadata.columnName);
325
+ }
326
+ }
327
+ return proxy;
328
+ }
329
+ });
330
+ // Execute the selector to capture property accesses
331
+ selector(proxy);
332
+ // Add the index metadata
333
+ metadata.indexes.push({
334
+ name: indexName,
335
+ columns: columnNames
336
+ });
337
+ return this;
338
+ }
339
+ /**
340
+ * Extract property name from selector
341
+ */
342
+ extractPropertyName(selector) {
343
+ const selectorStr = selector.toString();
344
+ const match = selectorStr.match(/\.([a-zA-Z_$][a-zA-Z0-9_$]*)/);
345
+ if (!match) {
346
+ throw new Error('Could not extract property name from selector');
347
+ }
348
+ return match[1];
349
+ }
350
+ }
351
+ exports.EntityConfigBuilder = EntityConfigBuilder;
352
+ /**
353
+ * Property configuration builder that requires a column type
354
+ */
355
+ class EntityPropertyConfigBuilder {
356
+ constructor(entityClass, propertyKey) {
357
+ this.entityClass = entityClass;
358
+ this.propertyKey = propertyKey;
359
+ }
360
+ /**
361
+ * Set the column type
362
+ */
363
+ hasType(columnBuilder) {
364
+ const metadata = entity_base_1.EntityMetadataStore.getOrCreateMetadata(this.entityClass);
365
+ const dbColumnName = columnBuilder.build().name;
366
+ const propMetadata = {
367
+ propertyKey: this.propertyKey,
368
+ columnName: dbColumnName,
369
+ columnBuilder: columnBuilder,
370
+ };
371
+ metadata.properties.set(this.propertyKey, propMetadata);
372
+ return new EntityPropertyBuilder(this.entityClass, this.propertyKey, columnBuilder);
373
+ }
374
+ }
375
+ exports.EntityPropertyConfigBuilder = EntityPropertyConfigBuilder;
376
+ //# sourceMappingURL=entity-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-builder.js","sourceRoot":"","sources":["../../src/entity/entity-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { DbEntity, EntityConstructor } from './entity-base';
2
+ import { EntityConfigBuilder } from './entity-builder';
3
+ import { TableBuilder } from '../schema/table-builder';
4
+ /**
5
+ * Model builder for configuring entities
6
+ */
7
+ export declare class DbModelConfig {
8
+ /**
9
+ * Configure an entity
10
+ */
11
+ entity<TEntity extends DbEntity>(entityClass: EntityConstructor<TEntity>, configure: (builder: EntityConfigBuilder<TEntity>) => void): void;
12
+ /**
13
+ * Build all table definitions from entity metadata
14
+ * @internal
15
+ */
16
+ buildTables(): Map<string, TableBuilder<any>>;
17
+ }
18
+ //# sourceMappingURL=model-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/entity/model-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAwB,MAAM,yBAAyB,CAAC;AAG7E;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,OAAO,SAAS,QAAQ,EAC7B,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACvC,SAAS,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,IAAI,GACzD,IAAI;IAKP;;;OAGG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CAuJ9C"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbModelConfig = void 0;
4
+ const entity_base_1 = require("./entity-base");
5
+ const entity_builder_1 = require("./entity-builder");
6
+ const table_builder_1 = require("../schema/table-builder");
7
+ const navigation_1 = require("../schema/navigation");
8
+ /**
9
+ * Model builder for configuring entities
10
+ */
11
+ class DbModelConfig {
12
+ /**
13
+ * Configure an entity
14
+ */
15
+ entity(entityClass, configure) {
16
+ const builder = new entity_builder_1.EntityConfigBuilder(entityClass);
17
+ configure(builder);
18
+ }
19
+ /**
20
+ * Build all table definitions from entity metadata
21
+ * @internal
22
+ */
23
+ buildTables() {
24
+ const tables = new Map();
25
+ const metadataEntries = Array.from(entity_base_1.EntityMetadataStore.metadata.entries());
26
+ // First pass: build tables without navigations
27
+ const tablesWithoutNav = new Map();
28
+ for (const [entityClass, metadata] of metadataEntries) {
29
+ const schema = {};
30
+ // Add properties
31
+ for (const [propKey, propMetadata] of metadata.properties.entries()) {
32
+ schema[propKey] = propMetadata.columnBuilder;
33
+ }
34
+ const tableBuilder = new table_builder_1.TableBuilder(metadata.tableName, schema, metadata.indexes || [], [], metadata.schemaName);
35
+ tablesWithoutNav.set(metadata.tableName, { table: tableBuilder, entityClass, metadata });
36
+ }
37
+ // Second pass: add navigations
38
+ for (const [entityClass, metadata] of metadataEntries) {
39
+ const tableInfo = Array.from(tablesWithoutNav.values()).find(t => t.entityClass === entityClass);
40
+ if (!tableInfo)
41
+ continue;
42
+ const { table: tableBuilder } = tableInfo;
43
+ if (metadata.navigations.size > 0) {
44
+ const navSchema = {};
45
+ for (const [propKey, navMetadata] of metadata.navigations.entries()) {
46
+ const targetEntityClass = navMetadata.targetEntity();
47
+ const targetMetadata = entity_base_1.EntityMetadataStore.getMetadata(targetEntityClass);
48
+ if (!targetMetadata) {
49
+ throw new Error(`No metadata found for target entity ${targetEntityClass.name}`);
50
+ }
51
+ const targetTableInfo = tablesWithoutNav.get(targetMetadata.tableName);
52
+ if (!targetTableInfo) {
53
+ throw new Error(`No table found for ${targetMetadata.tableName}`);
54
+ }
55
+ const targetTable = targetTableInfo.table;
56
+ // Determine which table has the foreign key
57
+ let foreignKeyTable;
58
+ let principalKeyTable;
59
+ let foreignKeyProp;
60
+ let principalKeyProp;
61
+ if (navMetadata.relationType === 'many') {
62
+ // For hasMany: FK is on target table, PK is on current table
63
+ foreignKeyTable = targetTable;
64
+ principalKeyTable = tableBuilder;
65
+ foreignKeyProp = navMetadata.foreignKey;
66
+ principalKeyProp = navMetadata.principalKey;
67
+ }
68
+ else {
69
+ // For hasOne: FK is on current table, PK is on target table
70
+ foreignKeyTable = tableBuilder;
71
+ principalKeyTable = targetTable;
72
+ foreignKeyProp = navMetadata.foreignKey;
73
+ principalKeyProp = navMetadata.principalKey;
74
+ }
75
+ // Create navigation
76
+ if (navMetadata.relationType === 'many') {
77
+ navSchema[propKey] = new navigation_1.DbNavigationCollection(targetTable, {
78
+ foreignKeys: [foreignKeyTable.field(foreignKeyProp)],
79
+ matches: [principalKeyTable.field(principalKeyProp)],
80
+ isMandatory: navMetadata.isRequired || false,
81
+ });
82
+ }
83
+ else {
84
+ navSchema[propKey] = new navigation_1.DbNavigation(() => ({
85
+ targetTable: targetTable,
86
+ config: {
87
+ foreignKeys: [foreignKeyTable.field(foreignKeyProp)],
88
+ matches: [principalKeyTable.field(principalKeyProp)],
89
+ isMandatory: navMetadata.isRequired || false,
90
+ }
91
+ }));
92
+ }
93
+ }
94
+ // Merge with existing schema
95
+ const existingSchema = tableBuilder.schemaDef;
96
+ const mergedTable = new table_builder_1.TableBuilder(metadata.tableName, { ...existingSchema, ...navSchema }, metadata.indexes || [], [], metadata.schemaName);
97
+ tables.set(metadata.tableName, mergedTable);
98
+ }
99
+ else {
100
+ tables.set(metadata.tableName, tableBuilder);
101
+ }
102
+ }
103
+ // Third pass: collect foreign key constraints from navigations
104
+ const foreignKeysByTable = new Map();
105
+ for (const tableInfo of tablesWithoutNav.values()) {
106
+ const { metadata } = tableInfo;
107
+ const fkConstraints = [];
108
+ for (const [propKey, navMetadata] of metadata.navigations.entries()) {
109
+ const targetEntityClass = navMetadata.targetEntity();
110
+ const targetMetadata = entity_base_1.EntityMetadataStore.getMetadata(targetEntityClass);
111
+ if (!targetMetadata)
112
+ continue;
113
+ // Only create FK constraint if this table contains the foreign key
114
+ if (navMetadata.relationType === 'one') {
115
+ // For hasOne: FK is on current table
116
+ const foreignKeyProp = navMetadata.foreignKey;
117
+ const principalKeyProp = navMetadata.principalKey;
118
+ // Get the column name for the foreign key property
119
+ const fkPropMetadata = metadata.properties.get(foreignKeyProp);
120
+ if (!fkPropMetadata)
121
+ continue;
122
+ // Get the column name for the principal key property
123
+ const pkPropMetadata = targetMetadata.properties.get(principalKeyProp);
124
+ if (!pkPropMetadata)
125
+ continue;
126
+ // Generate or use custom constraint name
127
+ const constraintName = navMetadata.constraintName ||
128
+ `FK_${metadata.tableName}_${targetMetadata.tableName}_${fkPropMetadata.columnName}`;
129
+ fkConstraints.push({
130
+ name: constraintName,
131
+ columns: [fkPropMetadata.columnName],
132
+ referencedTable: targetMetadata.tableName,
133
+ referencedColumns: [pkPropMetadata.columnName],
134
+ onDelete: navMetadata.onDelete,
135
+ onUpdate: navMetadata.onUpdate,
136
+ });
137
+ }
138
+ }
139
+ if (fkConstraints.length > 0) {
140
+ foreignKeysByTable.set(metadata.tableName, fkConstraints);
141
+ }
142
+ }
143
+ // Fourth pass: rebuild tables with foreign key constraints
144
+ const finalTables = new Map();
145
+ for (const [tableName, tableBuilder] of tables.entries()) {
146
+ const existingSchema = tableBuilder.schemaDef;
147
+ const existingIndexes = tableBuilder.indexDefs || [];
148
+ const existingSchemaName = tableBuilder.schemaName;
149
+ const foreignKeys = foreignKeysByTable.get(tableName) || [];
150
+ const finalTable = new table_builder_1.TableBuilder(tableName, existingSchema, existingIndexes, foreignKeys, existingSchemaName);
151
+ finalTables.set(tableName, finalTable);
152
+ }
153
+ return finalTables;
154
+ }
155
+ }
156
+ exports.DbModelConfig = DbModelConfig;
157
+ //# sourceMappingURL=model-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/entity/model-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export { integer, serial, bigint, bigserial, smallint, decimal, numeric, real, doublePrecision, varchar, char, text, boolean, timestamp, timestamptz, date, time, uuid, json, jsonb, bytea, enumColumn, } from './schema/column-builder';
2
+ export { pgEnum, EnumTypeDefinition, EnumTypeRegistry, EnumValues, } from './types/enum-builder';
3
+ export { QueryBuilder, SelectQueryBuilder, CollectionQueryBuilder, } from './query/query-builder';
4
+ export { GroupedQueryBuilder, GroupedSelectQueryBuilder, GroupedItem, } from './query/grouped-query';
5
+ export { JoinQueryBuilder, JoinType, JoinDefinition, } from './query/join-builder';
6
+ export { Condition, ConditionOperator, ConditionBuilder, SqlFragment, FieldRef, eq, ne, gt, gte, lt, lte, like, ilike, inArray, notInArray, isNull, isNotNull, between, and, or, not, sql, } from './query/conditions';
7
+ export { Subquery, SubqueryFieldRef, isSubquery, exists, notExists, inSubquery, notInSubquery, eqSubquery, neSubquery, gtSubquery, gteSubquery, ltSubquery, lteSubquery, SubqueryResult, SubqueryMode, } from './query/subquery';
8
+ export { DbCte, DbCteBuilder, InferCteColumns, isCte, } from './query/cte-builder';
9
+ export { QueryOptions, LoggingOptions, CollectionStrategyType, } from './entity/db-context';
10
+ export { ICollectionStrategy, CollectionStrategyType as CollectionStrategy, CollectionAggregationConfig, CollectionAggregationResult, } from './query/collection-strategy.interface';
11
+ export { CollectionStrategyFactory, } from './query/collection-strategy.factory';
12
+ export { DbEntity, EntityConstructor, EntityMetadataStore, } from './entity/entity-base';
13
+ export { DbColumn, UnwrapDbColumns, isDbColumn, InsertData, ExtractDbColumns, } from './entity/db-column';
14
+ export { EntityConfigBuilder, EntityPropertyBuilder, EntityNavigationBuilder, HasManyNavigationBuilder, HasOneNavigationBuilder, } from './entity/entity-builder';
15
+ export { DbModelConfig, } from './entity/model-config';
16
+ export { DatabaseContext as DbContext, DbEntityTable, EntityQuery, EntityInsertBuilder, EntityUpsertConfig, EntityCollectionQuery, } from './entity/db-context';
17
+ export { ColumnType, TypeScriptType, TypeAliases, TypeAlias, } from './types/column-types';
18
+ export { CustomType, CustomTypeBuilder, customType, json as jsonType, array, enumType, point, Point, vector, interval, Interval, } from './types/custom-types';
19
+ export { TypeMapper, CustomTypeDefinition, customType as createCustomType, identityMapper, applyToDriver, applyFromDriver, applyFromDriverArray, } from './types/type-mapper';
20
+ export { DbSequence, SequenceConfig, SequenceBuilder, sequence, } from './schema/sequence-builder';
21
+ export { DbSchemaManager, } from './migration/db-schema-manager';
22
+ export { EnumMigrator, } from './migration/enum-migrator';
23
+ export { DatabaseClient, PooledConnection, QueryResult as ClientQueryResult, } from './database/database-client.interface';
24
+ export { PostgresClient, } from './database/postgres-client';
25
+ export { PgClient, } from './database/pg-client';
26
+ export type { PoolConfig, PostgresOptions, } from './database/types';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}