@happyvertical/smrt-core 0.47.2 → 0.49.0
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/agents/generators.md +12 -0
- package/agents/object-runtime.md +7 -0
- package/agents/schema-paths.md +62 -0
- package/agents/system-diagnostics.md +6 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +9 -6
- package/dist/cascade.js.map +1 -1
- package/dist/collection.d.ts +0 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +35 -45
- package/dist/collection.js.map +1 -1
- package/dist/decorators/compatibility.d.ts +1 -1
- package/dist/decorators/compatibility.d.ts.map +1 -1
- package/dist/decorators/compatibility.js +2 -2
- package/dist/decorators/compatibility.js.map +1 -1
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +33 -24
- package/dist/decorators/index.js.map +1 -1
- package/dist/interceptors.d.ts +3 -1
- package/dist/interceptors.d.ts.map +1 -1
- package/dist/interceptors.js +3 -2
- package/dist/interceptors.js.map +1 -1
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/migrations/differ.d.ts +10 -4
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +173 -5
- package/dist/migrations/differ.js.map +1 -1
- package/dist/object.d.ts +1 -5
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +28 -37
- package/dist/object.js.map +1 -1
- package/dist/registry/class-registration.d.ts +2 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +47 -16
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/name-resolver.d.ts.map +1 -1
- package/dist/registry/name-resolver.js +3 -3
- package/dist/registry/name-resolver.js.map +1 -1
- package/dist/registry/relationship-graph.d.ts +2 -0
- package/dist/registry/relationship-graph.d.ts.map +1 -1
- package/dist/registry/relationship-graph.js +60 -5
- package/dist/registry/relationship-graph.js.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +4 -1
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/shared-state.d.ts +18 -0
- package/dist/registry/shared-state.d.ts.map +1 -1
- package/dist/registry/shared-state.js +25 -1
- package/dist/registry/shared-state.js.map +1 -1
- package/dist/registry/types.d.ts +8 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.d.ts +32 -5
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +120 -12
- package/dist/registry.js.map +1 -1
- package/dist/relationship-loader.d.ts +6 -0
- package/dist/relationship-loader.d.ts.map +1 -0
- package/dist/relationship-loader.js +35 -0
- package/dist/relationship-loader.js.map +1 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +6 -3
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/schema/foreign-key-ddl.d.ts +8 -0
- package/dist/schema/foreign-key-ddl.d.ts.map +1 -1
- package/dist/schema/foreign-key-ddl.js +12 -1
- package/dist/schema/foreign-key-ddl.js.map +1 -1
- package/dist/schema/foreign-key-orphan-report.d.ts.map +1 -1
- package/dist/schema/foreign-key-orphan-report.js +18 -1
- package/dist/schema/foreign-key-orphan-report.js.map +1 -1
- package/dist/schema/generator.d.ts +2 -0
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +16 -9
- package/dist/schema/generator.js.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +2 -2
- package/dist/schema/live-parity.d.ts.map +1 -1
- package/dist/schema/live-parity.js +74 -0
- package/dist/schema/live-parity.js.map +1 -1
- package/dist/schema/text-cast-probe.d.ts +66 -0
- package/dist/schema/text-cast-probe.d.ts.map +1 -0
- package/dist/schema/text-cast-probe.js +142 -0
- package/dist/schema/text-cast-probe.js.map +1 -0
- package/dist/schema/types.d.ts +28 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/utils.d.ts.map +1 -1
- package/dist/schema/utils.js +2 -1
- package/dist/schema/utils.js.map +1 -1
- package/dist/schema.js +2 -2
- package/dist/smrt-knowledge.json +11 -11
- package/dist/system/diagnostics.d.ts +22 -0
- package/dist/system/diagnostics.d.ts.map +1 -1
- package/dist/system/diagnostics.js +88 -31
- package/dist/system/diagnostics.js.map +1 -1
- package/dist/test-utils.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -1
- package/dist/vite-plugin/dev-plane-route.d.ts +5 -0
- package/dist/vite-plugin/dev-plane-route.d.ts.map +1 -0
- package/dist/vite-plugin/dev-plane-route.js +91 -0
- package/dist/vite-plugin/dev-plane-route.js.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts +8 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +2 -0
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/package.json +4 -4
package/dist/collection.js
CHANGED
|
@@ -9,6 +9,7 @@ import { SmrtClass } from "./class.js";
|
|
|
9
9
|
import { EmbeddingProvider } from "./embeddings/provider.js";
|
|
10
10
|
import { EmbeddingStorage } from "./embeddings/storage.js";
|
|
11
11
|
import { MAX_LIST_LIMIT, QueryBoundsError, QueryOrderByError } from "./query-bounds.js";
|
|
12
|
+
import { resolveOneToManyInverse, resolveRelationshipTargetName } from "./relationship-loader.js";
|
|
12
13
|
import { verifyPersistenceTable } from "./schema/table-verifier.js";
|
|
13
14
|
import { fieldsFromClass, formatDataJs, toCamelCase } from "./utils.js";
|
|
14
15
|
import { ObjectRegistry } from "./registry.js";
|
|
@@ -552,7 +553,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
552
553
|
const itemClassName = this.getResolvedItemClassName();
|
|
553
554
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
554
555
|
const schema = ObjectRegistry.getSchema(itemQualifiedName) ?? ObjectRegistry.getSchema(itemClassName);
|
|
555
|
-
const schemaColumnNames = schema?.columns ? new Set(Object.keys(schema.columns)) : void 0;
|
|
556
|
+
const schemaColumnNames = schema?.columns && Object.keys(schema.columns).length > 0 ? new Set(Object.keys(schema.columns)) : void 0;
|
|
556
557
|
const registeredFields = ObjectRegistry.getFields(itemQualifiedName);
|
|
557
558
|
const explicitFields = registeredFields.size > 0 ? registeredFields : ObjectRegistry.getFields(itemClassName);
|
|
558
559
|
const explicitFieldNames = new Set(explicitFields.keys());
|
|
@@ -626,36 +627,28 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
626
627
|
return [`CASE WHEN ${column} IS NULL THEN 1 ELSE 0 END ASC`, `${column} ${term.direction}`];
|
|
627
628
|
}).join(", ");
|
|
628
629
|
}
|
|
629
|
-
resolveOneToManyInverseForeignKey(relationship) {
|
|
630
|
-
const inverseCandidates = ObjectRegistry.getInverseRelationshipsForSelf(this._itemClass.name).filter((candidate) => candidate.sourceClass === relationship.targetClass && candidate.type === "foreignKey");
|
|
631
|
-
const explicitForeignKey = relationship.options?.foreignKey;
|
|
632
|
-
const matchedForeignKey = explicitForeignKey ? inverseCandidates.find((candidate) => candidate.fieldName === explicitForeignKey) : void 0;
|
|
633
|
-
if (explicitForeignKey && !matchedForeignKey) throw new Error(`oneToMany ${relationship.fieldName} specifies foreignKey '${explicitForeignKey}', but ${relationship.targetClass} has no matching inverse foreignKey. Candidates: ${inverseCandidates.map((candidate) => candidate.fieldName).join(", ") || "(none)"}`);
|
|
634
|
-
const inverseForeignKey = matchedForeignKey ?? inverseCandidates.find((candidate) => candidate.targetClass === this._itemClass.name) ?? inverseCandidates[0];
|
|
635
|
-
if (!inverseForeignKey) throw new Error(`Could not find inverse foreignKey on ${relationship.targetClass} for oneToMany relationship ${relationship.fieldName}`);
|
|
636
|
-
return inverseForeignKey;
|
|
637
|
-
}
|
|
638
630
|
async listWithLatestRelated(options) {
|
|
639
631
|
await this.ensureStorageReady();
|
|
640
632
|
const itemClassName = this.getResolvedItemClassName();
|
|
641
633
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
642
|
-
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
634
|
+
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name, void 0, itemQualifiedName);
|
|
643
635
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options;
|
|
644
636
|
let { where, offset, limit, orderBy, stiScope } = interceptedOptions;
|
|
645
637
|
const latestOptions = interceptedOptions.latestRelated ?? options.latestRelated;
|
|
646
638
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
647
639
|
where = this.applyStiReadScope(where, stiScope);
|
|
648
640
|
where = resolveMetaTypeInWhere(where);
|
|
649
|
-
const relationship = ObjectRegistry.getRelationships(
|
|
641
|
+
const relationship = ObjectRegistry.getRelationships(itemQualifiedName).find((candidate) => candidate.fieldName === latestOptions.relation && candidate.type === "oneToMany");
|
|
650
642
|
if (!relationship) throw new Error(`latestRelated.relation '${latestOptions.relation}' is not a declared oneToMany relationship on ${itemClassName}.`);
|
|
651
|
-
const
|
|
652
|
-
const
|
|
643
|
+
const targetName = await resolveRelationshipTargetName(relationship);
|
|
644
|
+
const inverseForeignKey = resolveOneToManyInverse(itemQualifiedName, relationship, targetName);
|
|
645
|
+
const relatedCollection = await ObjectRegistry.getCollection(targetName, this.options);
|
|
653
646
|
await relatedCollection.ensureStorageReady();
|
|
654
647
|
const relatedFields = relatedCollection.getFieldsSync();
|
|
655
648
|
const relatedItemClassName = relatedCollection.getResolvedItemClassName();
|
|
656
649
|
const relatedQualifiedName = relatedCollection.getResolvedItemQualifiedName();
|
|
657
650
|
const relatedIsSTI = ObjectRegistry.getTableStrategy(relatedQualifiedName) === "sti";
|
|
658
|
-
const relatedInterceptorContext = createInterceptorContext(relatedItemClassName, "list", relatedCollection.constructor.name);
|
|
651
|
+
const relatedInterceptorContext = createInterceptorContext(relatedItemClassName, "list", relatedCollection.constructor.name, void 0, relatedQualifiedName);
|
|
659
652
|
let relatedWhere = (await GlobalInterceptors.executeBeforeList(relatedItemClassName, { where: {} }, relatedInterceptorContext) ?? { where: {} }).where;
|
|
660
653
|
if (relatedIsSTI) {
|
|
661
654
|
const relatedStiBase = ObjectRegistry.getSTIBase(relatedQualifiedName);
|
|
@@ -855,7 +848,8 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
855
848
|
const collectionCtor = this.constructor;
|
|
856
849
|
if (this.constructor !== SmrtCollection && collectionCtor._itemClass) {
|
|
857
850
|
const itemClass = collectionCtor._itemClass;
|
|
858
|
-
const
|
|
851
|
+
const registeredItem = ObjectRegistry.getClassByConstructor(itemClass);
|
|
852
|
+
const itemClassName = registeredItem?.qualifiedName ?? registeredItem?.name ?? itemClass.name;
|
|
859
853
|
ObjectRegistry.registerCollection(itemClassName, collectionCtor);
|
|
860
854
|
}
|
|
861
855
|
}
|
|
@@ -885,9 +879,11 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
885
879
|
* ```
|
|
886
880
|
*/
|
|
887
881
|
static async create(options = {}) {
|
|
888
|
-
const { _className, db, defaultListLimit, persistence, ai, fs, logging, maxListLimit, metrics, pubsub, sanitization, signals } = options;
|
|
882
|
+
const { _className, _deferRuntimeInitialization, _reuseInitializedDb, db, defaultListLimit, persistence, ai, fs, logging, maxListLimit, metrics, pubsub, sanitization, signals } = options;
|
|
889
883
|
const collectionOptions = {
|
|
890
884
|
_className,
|
|
885
|
+
_deferRuntimeInitialization,
|
|
886
|
+
_reuseInitializedDb,
|
|
891
887
|
db,
|
|
892
888
|
persistence,
|
|
893
889
|
ai,
|
|
@@ -1120,7 +1116,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1120
1116
|
await this.ensureStorageReady();
|
|
1121
1117
|
const itemClassName = this.getResolvedItemClassName();
|
|
1122
1118
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1123
|
-
const interceptorContext = createInterceptorContext(itemClassName, "get", this.constructor.name);
|
|
1119
|
+
const interceptorContext = createInterceptorContext(itemClassName, "get", this.constructor.name, void 0, itemQualifiedName);
|
|
1124
1120
|
const interceptedFilter = await GlobalInterceptors.executeBeforeGet(itemClassName, filter, interceptorContext);
|
|
1125
1121
|
let where = typeof interceptedFilter === "string" ? resolveGetStringFilter(interceptedFilter) : interceptedFilter;
|
|
1126
1122
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
@@ -1143,7 +1139,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1143
1139
|
await this.ensureStorageReady();
|
|
1144
1140
|
const itemClassName = this.getResolvedItemClassName();
|
|
1145
1141
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1146
|
-
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
1142
|
+
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name, void 0, itemQualifiedName);
|
|
1147
1143
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1148
1144
|
let { where, offset, limit, orderBy, select, stiScope } = interceptedOptions;
|
|
1149
1145
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
@@ -1187,15 +1183,13 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1187
1183
|
async eagerLoadRelationships(instances, relationships) {
|
|
1188
1184
|
if (instances.length === 0) return;
|
|
1189
1185
|
for (const fieldName of relationships) {
|
|
1190
|
-
const relationship = ObjectRegistry.getRelationships(this.
|
|
1186
|
+
const relationship = ObjectRegistry.getRelationships(this.getResolvedItemQualifiedName()).find((r) => r.fieldName === fieldName);
|
|
1191
1187
|
if (!relationship) {
|
|
1192
1188
|
logger.warn(`Relationship ${fieldName} not found on ${this._itemClass.name}, skipping eager load`);
|
|
1193
1189
|
continue;
|
|
1194
1190
|
}
|
|
1195
|
-
if (relationship.type === "foreignKey" || relationship.type === "crossPackageRef")
|
|
1196
|
-
|
|
1197
|
-
await this.batchLoadForeignKeys(instances, fieldName, relationship);
|
|
1198
|
-
} else if (relationship.type === "oneToMany") await this.batchLoadOneToMany(instances, fieldName, relationship);
|
|
1191
|
+
if (relationship.type === "foreignKey" || relationship.type === "crossPackageRef") await this.batchLoadForeignKeys(instances, fieldName, relationship);
|
|
1192
|
+
else if (relationship.type === "oneToMany") await this.batchLoadOneToMany(instances, fieldName, relationship);
|
|
1199
1193
|
else if (relationship.type === "manyToMany") await this.batchLoadManyToMany(instances, fieldName, relationship);
|
|
1200
1194
|
}
|
|
1201
1195
|
}
|
|
@@ -1214,9 +1208,10 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1214
1208
|
if (value && typeof value === "string") foreignKeyValues.add(value);
|
|
1215
1209
|
}
|
|
1216
1210
|
if (foreignKeyValues.size === 0) return;
|
|
1211
|
+
const targetName = await resolveRelationshipTargetName(relationship);
|
|
1217
1212
|
let targetCollection;
|
|
1218
1213
|
try {
|
|
1219
|
-
targetCollection = await ObjectRegistry.getCollection(
|
|
1214
|
+
targetCollection = await ObjectRegistry.getCollection(targetName, this.options);
|
|
1220
1215
|
} catch (error) {
|
|
1221
1216
|
logger.warn(`Could not get collection for ${relationship.targetClass}`, { error });
|
|
1222
1217
|
return;
|
|
@@ -1246,20 +1241,13 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1246
1241
|
* @private
|
|
1247
1242
|
*/
|
|
1248
1243
|
async batchLoadOneToMany(instances, fieldName, relationship) {
|
|
1249
|
-
const
|
|
1250
|
-
const
|
|
1251
|
-
const matchedForeignKey = explicitForeignKey ? inverseCandidates.find((r) => r.fieldName === explicitForeignKey) : void 0;
|
|
1252
|
-
if (explicitForeignKey && !matchedForeignKey) throw new Error(`oneToMany ${fieldName} specifies foreignKey '${explicitForeignKey}', but ${relationship.targetClass} has no matching inverse foreignKey. Candidates: ${inverseCandidates.map((r) => r.fieldName).join(", ") || "(none)"}`);
|
|
1253
|
-
const inverseForeignKey = matchedForeignKey ?? inverseCandidates.find((r) => r.targetClass === this._itemClass.name) ?? inverseCandidates[0];
|
|
1254
|
-
if (!inverseForeignKey) {
|
|
1255
|
-
logger.warn(`Could not find inverse foreignKey for oneToMany ${fieldName}`);
|
|
1256
|
-
return;
|
|
1257
|
-
}
|
|
1244
|
+
const targetName = await resolveRelationshipTargetName(relationship);
|
|
1245
|
+
const inverseForeignKey = resolveOneToManyInverse(this.getResolvedItemQualifiedName(), relationship, targetName);
|
|
1258
1246
|
const instanceIds = instances.map((i) => i.id).filter((id) => !!id);
|
|
1259
1247
|
if (instanceIds.length === 0) return;
|
|
1260
1248
|
let targetCollection;
|
|
1261
1249
|
try {
|
|
1262
|
-
targetCollection = await ObjectRegistry.getCollection(
|
|
1250
|
+
targetCollection = await ObjectRegistry.getCollection(targetName, this.options);
|
|
1263
1251
|
} catch (error) {
|
|
1264
1252
|
logger.warn(`Could not get collection for ${relationship.targetClass}`, { error });
|
|
1265
1253
|
return;
|
|
@@ -1295,6 +1283,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1295
1283
|
async batchLoadManyToMany(instances, fieldName, relationship) {
|
|
1296
1284
|
const instanceIds = instances.map((i) => i.id).filter((id) => !!id);
|
|
1297
1285
|
if (instanceIds.length === 0) return;
|
|
1286
|
+
await resolveRelationshipTargetName(relationship);
|
|
1298
1287
|
let through;
|
|
1299
1288
|
let sourceColumn;
|
|
1300
1289
|
let targetColumn;
|
|
@@ -1311,9 +1300,10 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1311
1300
|
}
|
|
1312
1301
|
for (const instance of instances) instance._setLoadedRelationship(fieldName, []);
|
|
1313
1302
|
const junctionRowsAll = [];
|
|
1303
|
+
const junctionProjection = [sourceColumn, targetColumn].map((column) => this.getDatabaseEngine() === "duckdb" ? `CAST("${column}" AS VARCHAR) AS "${column}"` : `"${column}"`).join(", ");
|
|
1314
1304
|
for (const idChunk of chunkArray(instanceIds, 900)) {
|
|
1315
1305
|
const placeholders = idChunk.map(() => "?").join(", ");
|
|
1316
|
-
const result = await this.db.query(`SELECT
|
|
1306
|
+
const result = await this.db.query(`SELECT ${junctionProjection} FROM "${through}" WHERE "${sourceColumn}" IN (${placeholders})`, idChunk);
|
|
1317
1307
|
junctionRowsAll.push(...result.rows);
|
|
1318
1308
|
}
|
|
1319
1309
|
if (junctionRowsAll.length === 0) return;
|
|
@@ -1607,8 +1597,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1607
1597
|
*/
|
|
1608
1598
|
getFieldsSync() {
|
|
1609
1599
|
if (this._cachedFields) return this._cachedFields;
|
|
1610
|
-
const
|
|
1611
|
-
const fields = ObjectRegistry.getFields(className);
|
|
1600
|
+
const fields = ObjectRegistry.getFields(this.getResolvedItemQualifiedName());
|
|
1612
1601
|
return Object.fromEntries(fields);
|
|
1613
1602
|
}
|
|
1614
1603
|
/**
|
|
@@ -1637,15 +1626,15 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1637
1626
|
const baseSchema = ObjectRegistry.getSchema(stiBase);
|
|
1638
1627
|
if (baseSchema?.tableName) this._tableName = baseSchema.tableName;
|
|
1639
1628
|
else {
|
|
1640
|
-
const ownSchema = ObjectRegistry.getSchema(
|
|
1629
|
+
const ownSchema = ObjectRegistry.getSchema(qualifiedName);
|
|
1641
1630
|
this._tableName = ownSchema?.tableName || fallbackTableName;
|
|
1642
1631
|
}
|
|
1643
1632
|
} else {
|
|
1644
|
-
const ownSchema = ObjectRegistry.getSchema(
|
|
1633
|
+
const ownSchema = ObjectRegistry.getSchema(qualifiedName);
|
|
1645
1634
|
this._tableName = ownSchema?.tableName || fallbackTableName;
|
|
1646
1635
|
}
|
|
1647
1636
|
} else {
|
|
1648
|
-
const ownSchema = ObjectRegistry.getSchema(
|
|
1637
|
+
const ownSchema = ObjectRegistry.getSchema(qualifiedName);
|
|
1649
1638
|
this._tableName = ownSchema?.tableName || fallbackTableName;
|
|
1650
1639
|
}
|
|
1651
1640
|
}
|
|
@@ -1710,7 +1699,8 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1710
1699
|
async count(options = {}) {
|
|
1711
1700
|
await this.ensureStorageReady();
|
|
1712
1701
|
const itemClassName = this.getResolvedItemClassName();
|
|
1713
|
-
const
|
|
1702
|
+
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1703
|
+
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name, void 0, itemQualifiedName);
|
|
1714
1704
|
let { where, stiScope } = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1715
1705
|
where = this.applyStiReadScope(where, stiScope);
|
|
1716
1706
|
where = resolveMetaTypeInWhere(where);
|
|
@@ -1756,7 +1746,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1756
1746
|
if (options.fields.length > 20) throw new Error(`Invalid facets option: at most 20 fields are allowed.`);
|
|
1757
1747
|
const itemClassName = this.getResolvedItemClassName();
|
|
1758
1748
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1759
|
-
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
1749
|
+
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name, void 0, itemQualifiedName);
|
|
1760
1750
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1761
1751
|
let { where, stiScope } = interceptedOptions;
|
|
1762
1752
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
@@ -1874,7 +1864,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1874
1864
|
*/
|
|
1875
1865
|
async query(sql, params = [], options = {}) {
|
|
1876
1866
|
await this.ensureStorageReady();
|
|
1877
|
-
const interceptorContext = createInterceptorContext(this._itemClass.name, "query", this.constructor.name);
|
|
1867
|
+
const interceptorContext = createInterceptorContext(this._itemClass.name, "query", this.constructor.name, void 0, this.getResolvedItemQualifiedName());
|
|
1878
1868
|
const interceptedQuery = await GlobalInterceptors.executeBeforeQuery(this._itemClass.name, {
|
|
1879
1869
|
sql,
|
|
1880
1870
|
params,
|
|
@@ -2346,7 +2336,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
2346
2336
|
}, this.ai).getModelName();
|
|
2347
2337
|
const vector = (ObjectRegistry.getProjectEmbeddingConfig()?.storage || "json") === "native" ? this.systemDb.vector : void 0;
|
|
2348
2338
|
const itemClassName = this.getResolvedItemClassName();
|
|
2349
|
-
const tenantPrefilterContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
2339
|
+
const tenantPrefilterContext = createInterceptorContext(itemClassName, "list", this.constructor.name, void 0, this.getResolvedItemQualifiedName());
|
|
2350
2340
|
const tenantPrefilter = await GlobalInterceptors.executeBeforeList(itemClassName, { where: {} }, tenantPrefilterContext);
|
|
2351
2341
|
let candidateObjectIds;
|
|
2352
2342
|
if (tenantPrefilter.where && Object.keys(tenantPrefilter.where).length > 0) {
|