2022-08-11 10:20:50 +02:00

50 lines
1.1 KiB
JavaScript

'use strict';
const _ = require('lodash/fp');
const Field = require('./field');
const StringField = require('./string');
const JSONField = require('./json');
const BigIntegerField = require('./biginteger');
const NumberField = require('./number');
const DateField = require('./date');
const TimeField = require('./time');
const DatetimeField = require('./datetime');
const TimestampField = require('./timestamp');
const BooleanField = require('./boolean');
const typeToFieldMap = {
increments: Field,
password: StringField,
email: StringField,
string: StringField,
uid: StringField,
richtext: StringField,
text: StringField,
enumeration: StringField,
json: JSONField,
biginteger: BigIntegerField,
integer: NumberField,
float: NumberField,
decimal: NumberField,
date: DateField,
time: TimeField,
datetime: DatetimeField,
timestamp: TimestampField,
boolean: BooleanField,
};
const createField = (attribute) => {
const { type } = attribute;
if (_.has(type, typeToFieldMap)) {
return new typeToFieldMap[type]({});
}
throw new Error(`Undefined field for type ${type}`);
};
module.exports = {
createField,
};