| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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
- if (crud.addServerRoutes !== false) {
- routes(Object.assign({ app, controller:ctrl }, crud))
- }
- })
- }
- module.exports = serverFactory
|