mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 18:08:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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,
 | |
| };
 | 
