json-api-nestjs
Version:
JsonApi Plugin for NestJs
77 lines • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRelationProperty = exports.getPrimaryColumnType = exports.getPrimaryColumnName = exports.getPropsNullable = exports.getPropsType = exports.getProps = exports.getRelation = void 0;
const types_1 = require("../../mixin/types");
const getRelation = (entityMetadata) => entityMetadata.relations.map((i) => i.name);
exports.getRelation = getRelation;
const getProps = (entityMetadata) => {
const relations = (0, exports.getRelation)(entityMetadata);
return entityMetadata.props
.map((i) => i.name)
.filter((i) => !relations.includes(i));
};
exports.getProps = getProps;
const getPropsType = (entityMetadata, config) => {
const field = (0, exports.getProps)(entityMetadata);
const result = {};
for (const item of field) {
const props = entityMetadata.properties[item];
let typeProps = types_1.TypeField.string;
if (config.includes(props['type'])) {
result[item] = types_1.TypeField.array;
continue;
}
switch (props.runtimeType) {
case 'Date':
typeProps = types_1.TypeField.date;
break;
case 'number':
typeProps = types_1.TypeField.number;
break;
case 'boolean':
typeProps = types_1.TypeField.boolean;
break;
case 'object':
typeProps = types_1.TypeField.object;
break;
default:
typeProps = types_1.TypeField.string;
}
result[item] = typeProps;
}
return result;
};
exports.getPropsType = getPropsType;
const getPropsNullable = (entityMetadata) => {
return (0, exports.getProps)(entityMetadata)
.map((i) => {
// @ts-ignore
const props = entityMetadata.properties[i];
return props.nullable || props.default !== undefined ? i : false;
})
.filter((i) => !!i);
};
exports.getPropsNullable = getPropsNullable;
const getPrimaryColumnName = (entityMetadata) => entityMetadata.getPrimaryProp().name.toString();
exports.getPrimaryColumnName = getPrimaryColumnName;
const getPrimaryColumnType = (entityMetadata) => {
return entityMetadata.getPrimaryProp().runtimeType === 'number'
? types_1.TypeField.number
: types_1.TypeField.string;
};
exports.getPrimaryColumnType = getPrimaryColumnType;
const getRelationProperty = (entityMetadata) => {
return entityMetadata.relations.reduce((acum, item) => {
// @ts-expect-error its dynamic creater
acum[item.name] = {
entityClass: item.entity(),
nullable: item.kind === 'm:n' || item.kind === '1:m'
? false
: !!item.nullable,
isArray: item.kind === 'm:n' || item.kind === '1:m',
};
return acum;
}, {});
};
exports.getRelationProperty = getRelationProperty;
//# sourceMappingURL=index.js.map