mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 01:47:13 +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, | ||
|  | }; |