@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
44 lines (40 loc) • 1.79 kB
JavaScript
;
var exception_utility = require('../error/exception.utility.js');
var constructor_utility = require('../is/entity/constructor.utility.js');
var factory_utility = require('../is/entity/factory.utility.js');
var literal_utility = require('../is/entity/literal.utility.js');
/**
* Resolves property decorator entity references immediately or throws if unavailable.
* @param {TApiPropertyEntity} entity - Entity reference or resolver.
* @param {string} decoratorName - Decorator name for error context.
* @returns {IApiBaseEntity | Type<IApiBaseEntity>} Normalized entity reference.
*/
function ResolvePropertyEntity(entity, decoratorName) {
// eslint-disable-next-line @elsikora/sonar/use-type-alias
const resolved = TryResolvePropertyEntity(entity);
if (!resolved) {
throw exception_utility.ErrorException(`Entity for ${decoratorName} could not be resolved. Provide the entity class or a factory that returns it.`);
}
return resolved;
}
/**
* Attempts to resolve the entity reference without throwing when the resolver returns undefined.
* @param {TApiPropertyEntity} entity - Entity reference or factory.
* @returns {IApiBaseEntity | Type<IApiBaseEntity> | undefined} Resolved entity or undefined when not ready.
*/
function TryResolvePropertyEntity(entity) {
if (constructor_utility.IsEntityConstructor(entity)) {
return entity;
}
if (literal_utility.IsEntityLiteral(entity)) {
return entity;
}
if (factory_utility.IsEntityFactory(entity)) {
const factory = entity;
return factory();
}
return undefined;
}
exports.ResolvePropertyEntity = ResolvePropertyEntity;
exports.TryResolvePropertyEntity = TryResolvePropertyEntity;
//# sourceMappingURL=property-entity.utility.js.map