UNPKG

fenixenbot.js

Version:

Libreria Creacion De Bots De Discord

52 lines (43 loc) 1.69 kB
const { DataTypes } = require('sequelize'); function SSchema(config) { const { nameTable, items, options = {} } = config; if (!nameTable) throw new Error("nameTable es obligatorio"); if (!Array.isArray(items)) throw new Error("items debe ser un array"); const typeMap = { STRING: DataTypes.STRING, TEXT: DataTypes.TEXT, INTEGER: DataTypes.INTEGER, FLOAT: DataTypes.FLOAT, DOUBLE: DataTypes.DOUBLE, NUMBER: DataTypes.INTEGER, DECIMAL: DataTypes.DECIMAL, BOOLEAN: DataTypes.BOOLEAN, DATE: DataTypes.DATE, DATEONLY: DataTypes.DATEONLY, JSON: DataTypes.JSONB, JSONB: DataTypes.JSONB, ARRAY: DataTypes.ARRAY(DataTypes.STRING), UUID: DataTypes.UUID, ENUM: DataTypes.ENUM, }; const schemaDefinition = {}; items.forEach(itemConfig => { const { name, type, ...fieldOptions } = itemConfig; if (!name || !type) throw new Error("name y type son obligatorios"); const sequelizeType = typeMap[type.toUpperCase()]; if (!sequelizeType) throw new Error(`Tipo inválido: ${type}`); schemaDefinition[name] = { type: sequelizeType, ...fieldOptions, }; }); return (sequelizeInstance) => { if (!sequelizeInstance) { throw new Error("sequelizeInstance es undefined al definir el modelo"); } const sequelizeModel = sequelizeInstance.define(nameTable, schemaDefinition, options); sequelizeModel.modelName = nameTable; return sequelizeModel; }; } module.exports = SSchema;