| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const autoCrud = require('./index')
- const database = require('../lib/database')
- const Sequelize = require('sequelize')
- const C = require('../lib/controllers')
- const controller = require('../lib/crud/controller')
- const { defaults, routes } = require('../lib/crud')
- const resolveType = (o) => {
- let type = Sequelize[o.__type]
- if (o.__args) {
- type = type.apply(Sequelize, o.__args)
- }
- return type
- }
- const serverFactory = (app) => {
- const cruds = autoCrud._getCruds()
- cruds.forEach(crud => {
- crud = defaults(crud)
- // Schema
- for (let key in crud.schema) {
- const field = crud.schema[key]
- if (field.__type) {
- crud.schema[key] = resolveType(field)
- } else {
- if (field.type) field.type = resolveType(field.type)
- if (field.defaultValue) field.defaultValue = resolveType(field.defaultValue)
- }
- }
- const Type = database[crud.pascalName] = database.sequelize.define(crud.camelName, crud.schema, crud.options)
-
- // Controller
- const ctrl = C[crud.camelName] = controller({
- Type,
- camelName: crud.camelName
- })
- // Routes
- routes(Object.assign({ app, controller:ctrl }, crud))
- })
- }
- module.exports = serverFactory
|