UNPKG

swagger-decorator

Version:
87 lines (67 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _assign = require("babel-runtime/core-js/object/assign"); var _assign2 = _interopRequireDefault(_assign); var _keys = require("babel-runtime/core-js/object/keys"); var _keys2 = _interopRequireDefault(_keys); exports.generateSequelizeModel = generateSequelizeModel; var _type = require("../../entity/type"); var _singleton = require("../../internal/singleton"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var debug = require("debug")("sequelize"); var Sequelize = require("sequelize"); /** * Description 构造 Sequelize 模型 * @param EntityClass 实体类 * @param manuelDefinition 其他自定义的模型定义 * @param mappingCamelCaseToUnderScore: 是否需要将 CamelCase 映射到 UnderScore */ function generateSequelizeModel(EntityClass, manuelDefinition) { var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, _ref$mappingCamelCase = _ref.mappingCamelCaseToUnderScore, mappingCamelCaseToUnderScore = _ref$mappingCamelCase === undefined ? false : _ref$mappingCamelCase; // 获取当前内部对象 var properties = (0, _type.inferenceEntityProperties)(EntityClass, _singleton.innerEntityObject); // 获取当前目标对象的属性 var sequelizeDefinition = {}; for (var property in (0, _keys2.default)(properties)) { var sequelizeProperty = void 0; // 判断是否需要进行格式转换 if (mappingCamelCaseToUnderScore) { sequelizeProperty = property.replace(/([A-Z])/g, function ($1) { return "_" + $1.toLowerCase(); }); } else { sequelizeProperty = property; } // 为当前属性生成相关联的 Sequelize 说明 sequelizeDefinition[sequelizeProperty] = (0, _assign2.default)({}, { type: _mapType(properties[property].type), defaultValue: properties[property].defaultValue }, manuelDefinition[property]); } // 调试模式下打印生成的 Sequelize 模型定义 debug(sequelizeDefinition); return sequelizeDefinition; } /** * Description 映射数据类型 * @param type * @returns {*} * @private */ function _mapType(type) { if (type === "integer") { return Sequelize.INTEGER; } else if (type === "string") { return Sequelize.STRING; } else if (type === "boolean") { return Sequelize.BOOLEAN; } else if (type === "dateTime" || type === "date") { return Sequelize.DATE; } else if (type === "object" || type === "array") { return Sequelize.STRING; } }