@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
30 lines (26 loc) • 1.41 kB
JavaScript
;
var typeorm = require('typeorm');
/**
* Retrieves column and relation property names from an entity based on specified filters
* @param {IGetEntityColumnsProperties} properties - Configuration options for retrieving entity columns
* @returns {Array<keyof E>} Array of property names from the entity
* @template E - The entity type
*/
function GetEntityColumns(properties) {
const { entity, shouldTakeGeneratedOnly, shouldTakeRelationsOnly } = properties;
const columns = typeorm.getMetadataArgsStorage().columns.filter((column) => column.target == entity);
const relations = typeorm.getMetadataArgsStorage().relations.filter((relation) => relation.target == entity);
let columnNames;
if (shouldTakeRelationsOnly) {
columnNames = relations.map((relation) => relation.propertyName);
}
else {
// eslint-disable-next-line @elsikora/typescript/prefer-nullish-coalescing
const columnPropertyNames = columns.filter((column) => !shouldTakeGeneratedOnly || column.options.generated || column.options.default !== undefined).map((column) => column.propertyName);
const relationNames = relations.map((relation) => relation.propertyName);
columnNames = [...columnPropertyNames, ...relationNames];
}
return columnNames;
}
exports.GetEntityColumns = GetEntityColumns;
//# sourceMappingURL=get-entity-columns.utility.js.map