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.
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/dist/database/database-client.interface.d.ts +45 -0
- package/dist/database/database-client.interface.d.ts.map +1 -0
- package/dist/database/database-client.interface.js +20 -0
- package/dist/database/database-client.interface.js.map +1 -0
- package/dist/database/index.d.ts +5 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +10 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/pg-client.d.ts +30 -0
- package/dist/database/pg-client.d.ts.map +1 -0
- package/dist/database/pg-client.js +76 -0
- package/dist/database/pg-client.js.map +1 -0
- package/dist/database/postgres-client.d.ts +44 -0
- package/dist/database/postgres-client.d.ts.map +1 -0
- package/dist/database/postgres-client.js +111 -0
- package/dist/database/postgres-client.js.map +1 -0
- package/dist/database/types.d.ts +200 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +8 -0
- package/dist/database/types.js.map +1 -0
- package/dist/entity/base-entity.d.ts +21 -0
- package/dist/entity/base-entity.d.ts.map +1 -0
- package/dist/entity/base-entity.js +27 -0
- package/dist/entity/base-entity.js.map +1 -0
- package/dist/entity/db-column.d.ts +61 -0
- package/dist/entity/db-column.d.ts.map +1 -0
- package/dist/entity/db-column.js +35 -0
- package/dist/entity/db-column.js.map +1 -0
- package/dist/entity/db-context.d.ts +665 -0
- package/dist/entity/db-context.d.ts.map +1 -0
- package/dist/entity/db-context.js +1463 -0
- package/dist/entity/db-context.js.map +1 -0
- package/dist/entity/entity-base.d.ts +76 -0
- package/dist/entity/entity-base.d.ts.map +1 -0
- package/dist/entity/entity-base.js +42 -0
- package/dist/entity/entity-base.js.map +1 -0
- package/dist/entity/entity-builder.d.ts +171 -0
- package/dist/entity/entity-builder.d.ts.map +1 -0
- package/dist/entity/entity-builder.js +376 -0
- package/dist/entity/entity-builder.js.map +1 -0
- package/dist/entity/model-config.d.ts +18 -0
- package/dist/entity/model-config.d.ts.map +1 -0
- package/dist/entity/model-config.js +157 -0
- package/dist/entity/model-config.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/db-schema-manager.d.ts +228 -0
- package/dist/migration/db-schema-manager.d.ts.map +1 -0
- package/dist/migration/db-schema-manager.js +1055 -0
- package/dist/migration/db-schema-manager.js.map +1 -0
- package/dist/migration/enum-migrator.d.ts +29 -0
- package/dist/migration/enum-migrator.d.ts.map +1 -0
- package/dist/migration/enum-migrator.js +137 -0
- package/dist/migration/enum-migrator.js.map +1 -0
- package/dist/query/collection-strategy.factory.d.ts +16 -0
- package/dist/query/collection-strategy.factory.d.ts.map +1 -0
- package/dist/query/collection-strategy.factory.js +37 -0
- package/dist/query/collection-strategy.factory.js.map +1 -0
- package/dist/query/collection-strategy.interface.d.ts +146 -0
- package/dist/query/collection-strategy.interface.d.ts.map +1 -0
- package/dist/query/collection-strategy.interface.js +3 -0
- package/dist/query/collection-strategy.interface.js.map +1 -0
- package/dist/query/conditions.d.ts +222 -0
- package/dist/query/conditions.d.ts.map +1 -0
- package/dist/query/conditions.js +446 -0
- package/dist/query/conditions.js.map +1 -0
- package/dist/query/cte-builder.d.ts +95 -0
- package/dist/query/cte-builder.d.ts.map +1 -0
- package/dist/query/cte-builder.js +172 -0
- package/dist/query/cte-builder.js.map +1 -0
- package/dist/query/grouped-query.d.ts +186 -0
- package/dist/query/grouped-query.d.ts.map +1 -0
- package/dist/query/grouped-query.js +588 -0
- package/dist/query/grouped-query.js.map +1 -0
- package/dist/query/join-builder.d.ts +106 -0
- package/dist/query/join-builder.d.ts.map +1 -0
- package/dist/query/join-builder.js +275 -0
- package/dist/query/join-builder.js.map +1 -0
- package/dist/query/query-builder.d.ts +543 -0
- package/dist/query/query-builder.d.ts.map +1 -0
- package/dist/query/query-builder.js +2649 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
- package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
- package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
- package/dist/query/strategies/temptable-collection-strategy.js +456 -0
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
- package/dist/query/subquery.d.ts +152 -0
- package/dist/query/subquery.d.ts.map +1 -0
- package/dist/query/subquery.js +206 -0
- package/dist/query/subquery.js.map +1 -0
- package/dist/schema/column-builder.d.ts +127 -0
- package/dist/schema/column-builder.d.ts.map +1 -0
- package/dist/schema/column-builder.js +184 -0
- package/dist/schema/column-builder.js.map +1 -0
- package/dist/schema/inference.d.ts +26 -0
- package/dist/schema/inference.d.ts.map +1 -0
- package/dist/schema/inference.js +3 -0
- package/dist/schema/inference.js.map +1 -0
- package/dist/schema/navigation.d.ts +215 -0
- package/dist/schema/navigation.d.ts.map +1 -0
- package/dist/schema/navigation.js +233 -0
- package/dist/schema/navigation.js.map +1 -0
- package/dist/schema/row-type.d.ts +26 -0
- package/dist/schema/row-type.d.ts.map +1 -0
- package/dist/schema/row-type.js +3 -0
- package/dist/schema/row-type.js.map +1 -0
- package/dist/schema/sequence-builder.d.ts +87 -0
- package/dist/schema/sequence-builder.d.ts.map +1 -0
- package/dist/schema/sequence-builder.js +123 -0
- package/dist/schema/sequence-builder.js.map +1 -0
- package/dist/schema/table-builder.d.ts +122 -0
- package/dist/schema/table-builder.d.ts.map +1 -0
- package/dist/schema/table-builder.js +132 -0
- package/dist/schema/table-builder.js.map +1 -0
- package/dist/schema/typed-schema.d.ts +22 -0
- package/dist/schema/typed-schema.d.ts.map +1 -0
- package/dist/schema/typed-schema.js +28 -0
- package/dist/schema/typed-schema.js.map +1 -0
- package/dist/types/column-types.d.ts +20 -0
- package/dist/types/column-types.d.ts.map +1 -0
- package/dist/types/column-types.js +14 -0
- package/dist/types/column-types.js.map +1 -0
- package/dist/types/custom-types.d.ts +85 -0
- package/dist/types/custom-types.d.ts.map +1 -0
- package/dist/types/custom-types.js +132 -0
- package/dist/types/custom-types.js.map +1 -0
- package/dist/types/enum-builder.d.ts +31 -0
- package/dist/types/enum-builder.d.ts.map +1 -0
- package/dist/types/enum-builder.js +46 -0
- package/dist/types/enum-builder.js.map +1 -0
- package/dist/types/metadata.d.ts +67 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +57 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/type-mapper.d.ts +49 -0
- package/dist/types/type-mapper.d.ts.map +1 -0
- package/dist/types/type-mapper.js +49 -0
- package/dist/types/type-mapper.js.map +1 -0
- 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":";;;AAAA,+CAAyI;AAMzI;;GAEG;AACH,MAAa,qBAAqB;IAChC,YACU,WAAuC,EACvC,WAA0B,EAC1B,aAA4B;QAF5B,gBAAW,GAAX,WAAW,CAA4B;QACvC,gBAAW,GAAX,WAAW,CAAe;QAC1B,kBAAa,GAAb,aAAa,CAAe;IACnC,CAAC;IAEJ;;OAEG;IACH,aAAa,CAAC,IAAY;QACxB,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAChE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;QACF,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAExD,8CAA8C;QAC9C,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAExD,2CAA2C;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAU;QACxB,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;QAClC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAExD,6CAA6C;QAC7C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAExD,yCAAyC;QACzC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,eAAe,CAAmC,MAAkC;QAClF,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3FD,sDA2FC;AAED;;GAEG;AACH,MAAe,qBAAqB;IAClC,YACY,WAAuC,EACvC,WAA0B,EAC1B,YAA8C,EAC9C,YAA4B;QAH5B,gBAAW,GAAX,WAAW,CAA4B;QACvC,gBAAW,GAAX,WAAW,CAAe;QAC1B,iBAAY,GAAZ,YAAY,CAAkC;QAC9C,iBAAY,GAAZ,YAAY,CAAgB;IACrC,CAAC;IAEJ;;OAEG;IACO,gCAAgC,CAAC,QAAkB;QAC3D,8CAA8C;QAC9C,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,EAAS,EAAE;YACxC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBACf,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;oBACvD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,YAAY,CAAC,CAAC,4BAA4B;YACnD,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEtC,oEAAoE;YACpE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,2DAA2D;gBAC3D,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,uBAAuB;YACvB,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oDAAoD;YACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAES,qBAAqB,CAAC,eAAyB;QACvD,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAgC;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YACzF,YAAY,EAAE,EAAE,EAAE,kCAAkC;SACrD,CAAC;QACF,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAES,uBAAuB,CAAC,iBAA2B;QAC3D,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,WAAW,CAAC,YAAY,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/G,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAwB;QAC/B,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAwB;QAC/B,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC;QAChE,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;QAClC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAa,wBAA6E,SAAQ,qBAAuC;IACvI;;;;;OAKG;IACH,cAAc,CAAC,UAA8E;QAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAsB,CAAC,CAAC;QACtF,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,YAAgF;QAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAwB,CAAC,CAAC;QAC1F,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxBD,4DAwBC;AAED;;;;GAIG;AACH,MAAa,uBAA4E,SAAQ,qBAAuC;IACtI;;;;;OAKG;IACH,cAAc,CAAC,UAA8E;QAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAsB,CAAC,CAAC;QACtF,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,YAAgF;QAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAwB,CAAC,CAAC;QAC1F,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxBD,0DAwBC;AAED;;;GAGG;AACH,MAAa,uBAA4E,SAAQ,qBAAuC;IAGtI,cAAc,CAAC,UAAoB;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAID,gBAAgB,CAAC,YAAsB;QACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAhBD,0DAgBC;AAED;;GAEG;AACH,MAAa,mBAAmB;IAC9B,YAAoB,WAAuC;QAAvC,gBAAW,GAAX,WAAW,CAA4B;IAAG,CAAC;IAE/D;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,QAAyC;QAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAM,CAAC;QAC5D,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,OAAO,CACL,QAAyC,EACzC,YAA8C;QAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAM,CAAC;QAC5D,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,QAAyC,EACzC,YAA8C;QAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAM,CAAC;QAC5D,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,SAAiB,EACjB,QAA4D;QAE5D,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3E,oDAAoD;QACpD,MAAM,UAAU,GAAG,EAAa,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,6CAA6C;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE;YAClC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,yCAAyC;oBACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAqB,CAAC,CAAC;oBACpE,IAAI,YAAY,EAAE,CAAC;wBACjB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;QAEH,oDAAoD;QACpD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhB,yBAAyB;QACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,mBAAmB,CAA0B,QAAyC;QAC5F,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAkB,CAAC;IACnC,CAAC;CACF;AAvGD,kDAuGC;AAED;;GAEG;AACH,MAAa,2BAA2B;IACtC,YACU,WAAuC,EACvC,WAAc;QADd,gBAAW,GAAX,WAAW,CAA4B;QACvC,gBAAW,GAAX,WAAW,CAAG;IACrB,CAAC;IAEJ;;OAEG;IACH,OAAO,CAAC,aAA4B;QAClC,MAAM,QAAQ,GAAG,iCAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAI,aAAqB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;QACzD,MAAM,YAAY,GAAqB;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,YAAY;YACxB,aAAa,EAAE,aAAa;SAC7B,CAAC;QACF,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACxD,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACtF,CAAC;CACF;AApBD,kEAoBC"}
|
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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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"}
|