@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
66 lines (62 loc) • 4.18 kB
JavaScript
'use strict';
var object_decorator = require('../../../../../decorator/api/property/object.decorator.js');
var uuid_decorator = require('../../../../../decorator/api/property/uuid.decorator.js');
require('../../../../../enum/decorator/api/action.enum.js');
require('../../../../../enum/decorator/api/authentication-type.enum.js');
require('../../../../../enum/decorator/api/controller/get-list/query/filter/missing-behavior.enum.js');
require('../../../../../enum/decorator/api/controller/get-list/query/unlisted-fields.enum.js');
require('../../../../../enum/decorator/api/controller/relation-reference-shape.enum.js');
require('../../../../../enum/decorator/api/controller/request/target.enum.js');
require('../../../../../enum/decorator/api/controller/request/transformer-type.enum.js');
require('../../../../../enum/decorator/api/controller/response-target.enum.js');
var dtoType_enum = require('../../../../../enum/decorator/api/dto-type.enum.js');
require('../../../../../enum/decorator/api/function/context-storage-kind.enum.js');
require('../../../../../enum/decorator/api/function/subscriber-transaction-expectation.enum.js');
require('../../../../../enum/decorator/api/function/transaction/event-status.enum.js');
require('../../../../../enum/decorator/api/function/transaction/failure-stage.enum.js');
require('../../../../../enum/decorator/api/function/transaction/mode.enum.js');
require('../../../../../enum/decorator/api/function/transaction/outcome.enum.js');
require('../../../../../enum/decorator/api/function/transaction/owner-kind.enum.js');
require('../../../../../enum/decorator/api/function/transaction/trace-type.enum.js');
require('../../../../../enum/decorator/api/function/type.enum.js');
require('../../../../../enum/decorator/api/on-type.enum.js');
require('../../../../../enum/decorator/api/property/data-type.enum.js');
require('../../../../../enum/decorator/api/property/date/identifier.enum.js');
require('../../../../../enum/decorator/api/property/date/type.enum.js');
require('../../../../../enum/decorator/api/property/desribe-type.enum.js');
require('../../../../../enum/decorator/api/property/number-type.enum.js');
require('../../../../../enum/decorator/api/property/string-type.enum.js');
require('../../../../../enum/decorator/api/route/subscriber-authorization-expectation.enum.js');
require('../../../../../enum/decorator/api/route/type.enum.js');
var relationResponse_utility = require('../../../../../utility/dto/generate/relation-response.utility.js');
var exception_utility = require('../../../../../utility/error/exception.utility.js');
class DtoPropertyFactoryRelation {
create(metadata, entity, config, method, dtoType, propertyName) {
const { description, type, ...restProperties } = metadata;
const relationColumn = entity.columns.find((column) => column.name == propertyName);
const relationDescriptionCandidate = description?.trim();
let relationDescription = propertyName;
const relationName = `${String(entity.name)}.${propertyName}`;
if (relationDescriptionCandidate) {
relationDescription = relationDescriptionCandidate;
}
if (!relationColumn?.relation?.target) {
throw exception_utility.ErrorException(`Property ${relationName} is marked as RELATION but TypeORM relation target metadata was not found. Add a TypeORM relation decorator such as (() => TargetEntity).`);
}
if (dtoType === dtoType_enum.EApiDtoType.RESPONSE) {
return object_decorator.ApiPropertyObject({
description: relationDescription,
entity,
isArray: false,
type: relationResponse_utility.DtoGenerateRelationResponse(entity, method, dtoType, propertyName, {
relationDescription,
}),
...config,
...restProperties,
});
}
return uuid_decorator.ApiPropertyUUID({ description: relationDescription, entity, isArray: false, ...config, ...restProperties });
}
}
exports.DtoPropertyFactoryRelation = DtoPropertyFactoryRelation;
//# sourceMappingURL=relation.class.js.map