UNPKG

@sumor/database

Version:

A database connector for MySQL, etc. Based on entity.

82 lines (75 loc) 2.18 kB
import toDBType from './toDBType.js' export default (table, name, parameterInfo, alterFlag) => { let parameterColumn parameterInfo.type = parameterInfo.type || 'string' // 补全长度 switch (parameterInfo.type) { case 'string': parameterInfo.length = parameterInfo.length || 255 break case 'number': parameterInfo.length = parameterInfo.length || 10 break default: break } if (parameterInfo.increment) { parameterColumn = table.increments(name) } else { const dbType = toDBType(parameterInfo) let actualValueType switch (dbType) { case 'tinyint': parameterColumn = table.tinyint(name) actualValueType = 'number' break case 'smallint': parameterColumn = table.smallint(name) actualValueType = 'number' break case 'integer': parameterColumn = table.integer(name) actualValueType = 'number' break case 'bigInteger': parameterColumn = table.bigInteger(name) actualValueType = 'number' break case 'string': parameterColumn = table.string(name, parameterInfo.length) actualValueType = 'string' break case 'text': parameterColumn = table.text(name, parameterInfo.length) actualValueType = 'string' break case 'double': parameterColumn = table.double(name, parameterInfo.length, parameterInfo.decimal) actualValueType = 'number' break default: break } if (parameterInfo.default !== null) { let defaultValue if (actualValueType === 'number') { if (parameterInfo.default === undefined) { parameterInfo.default = 0 } defaultValue = parseInt(parameterInfo.default, 10) } else { if (parameterInfo.default === undefined) { parameterInfo.default = '' } defaultValue = parameterInfo.default.toString() } parameterColumn.defaultTo(defaultValue) } if (parameterInfo.notNull) { parameterColumn.notNullable() } } if (alterFlag) { parameterColumn.alter() } }