UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

55 lines (51 loc) 3 kB
'use strict'; require('../../enum/decorator/api/action.enum.js'); require('../../enum/decorator/api/authentication-type.enum.js'); require('../../enum/decorator/api/controller/load-relations-strategy.enum.js'); require('../../enum/decorator/api/controller/request-transformer-type.enum.js'); var dtoType_enum = require('../../enum/decorator/api/dto-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'); var desribeType_enum = 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'); var routeType_enum = require('../../enum/decorator/api/route-type.enum.js'); var isPropertyExposedForGuard_utility = require('./is-property-exposed-for-guard.utility.js'); /** * Determines if a property should be marked for inclusion in a specific DTO type * @param {EApiRouteType} method - The API route type (GET, POST, etc.) * @param {EApiDtoType} dtoType - The DTO type (request, response, etc.) * @param {string} propertyName - The name of the property * @param {TApiPropertyDescribeProperties} propertyMetadata - The property's metadata * @param {boolean} isPrimary - Whether the property is a primary key * @param {Type<IAuthGuard>} currentGuard - The current authentication guard * @returns {boolean} True if the property should be marked, false otherwise */ function DtoIsPropertyShouldBeMarked(method, dtoType, propertyName, propertyMetadata, isPrimary, currentGuard) { const isDateField = ["createdAt", "receivedAt", "updatedAt"].includes(propertyName); if (method === routeType_enum.EApiRouteType.CREATE && dtoType === dtoType_enum.EApiDtoType.BODY && isDateField) { return false; } const properties = propertyMetadata.properties?.[method]; if (properties?.[dtoType]?.isEnabled === false) { return false; } if (!isPropertyExposedForGuard_utility.DtoIsPropertyExposedForGuard(method, propertyMetadata, dtoType, currentGuard)) { return false; } if (dtoType === dtoType_enum.EApiDtoType.QUERY && propertyMetadata.type === desribeType_enum.EApiPropertyDescribeType.OBJECT) { return false; } if (dtoType === dtoType_enum.EApiDtoType.REQUEST && isPrimary) { return true; } if ((dtoType === dtoType_enum.EApiDtoType.QUERY || dtoType === dtoType_enum.EApiDtoType.BODY) && !isPrimary) { return true; } return dtoType !== dtoType_enum.EApiDtoType.REQUEST && dtoType !== dtoType_enum.EApiDtoType.QUERY && dtoType !== dtoType_enum.EApiDtoType.BODY; } exports.DtoIsPropertyShouldBeMarked = DtoIsPropertyShouldBeMarked; //# sourceMappingURL=is-property-should-be-marked.utility.js.map