herbsjs / herbs2rest

Create a REST API based on HerbsJS
MIT License
2 stars 13 forks source link

Auto-Generate controllers config #20

Closed italojs closed 2 years ago

italojs commented 3 years ago

Inside herbs-cli the generated project have a great logic that receive a usecase list and generates the controller list, I think we could bring it to herbs2rest.

So, instead I create

const controllerList = [
  {
    name: 'lists',
    getAll: { usecase: require('../usecases/getLists'), controller: require('../controller') },
    getById: { usecase: require('../usecases/getLists'), id: 'listId' },
    post: { usecase: require('../usecases/createList') },
    put: { usecase: require('../usecases/updateList') },
    delete: { usecase: require('../usecases/deleteList') }
  }
]

[...]
generateRoutes(controllerList, routes, true)  // true = console info endpoints
[...]

I could write

import { generateRoutes, generateControlerList } from 'herbs2rest'
const controllerList = generateControlerList(usecases)
generateRoutes(controllerList, routes, true)  // true = console info endpoints

or we could create a breaking change and use a option object, so we don't will need to create a new method

const controllerList = [
  {
    name: 'lists',
    getAll: { usecase: require('../usecases/getLists'), controller: require('../controller') },
    getById: { usecase: require('../usecases/getLists'), id: 'listId' },
    post: { usecase: require('../usecases/createList') },
    put: { usecase: require('../usecases/updateList') },
    delete: { usecase: require('../usecases/deleteList') }
  }
]
[...]
const config = {controllerList, router, verbose: true}
controllerList(config)
//or
const config = {usecaseList: usecases, router, verbose: true}
controllerList(config)
italojs commented 2 years ago

this is fixed here https://github.com/herbsjs/herbs2rest/issues/22