@forestadmin/datasource-toolkit
Version:
34 lines • 3.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = __importDefault(require("."));
const index_1 = require("../../../index");
class ProjectionFactory {
static all(collection) {
const schemaFields = collection.schema.fields;
const projectionFields = Object.entries(schemaFields).reduce((memo, [columnName, column]) => {
if (column.type === 'Column') {
return [...memo, columnName];
}
if (column.type === 'OneToOne' || column.type === 'ManyToOne') {
const relation = collection.dataSource.getCollection(column.foreignCollection);
const relationFields = relation.schema.fields;
return [
...memo,
...Object.keys(relationFields)
.filter(relColumnName => relationFields[relColumnName].type === 'Column')
.map(relColumnName => `${columnName}:${relColumnName}`),
];
}
return memo;
}, []);
return new _1.default(...projectionFields);
}
static columns(collection) {
return new _1.default(...index_1.SchemaUtils.getColumnNames(collection.schema));
}
}
exports.default = ProjectionFactory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcmZhY2VzL3F1ZXJ5L3Byb2plY3Rpb24vZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUEyQjtBQUMzQiwwQ0FBNkM7QUFHN0MsTUFBcUIsaUJBQWlCO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBc0I7UUFDL0IsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzFGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQzthQUM5QjtZQUVELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzdELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFFOUMsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQzt5QkFDM0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7eUJBQ3hFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLGFBQWEsRUFBRSxDQUFDO2lCQUMxRCxDQUFDO2FBQ0g7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsRUFBRSxFQUFjLENBQUMsQ0FBQztRQUVuQixPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFzQjtRQUNuQyxPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBN0JELG9DQTZCQyJ9