You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.9 KiB

import {AuthRequiredMiddleware, Request, right, Route, SessionAuthMiddleware} from '@extollo/lib'
import {Dash} from '../controllers/Dash.controller'
import CobaltMiddleware from '../middlewares/Cobalt.middleware'
import {ResourceAPI} from '../controllers/cobalt/ResourceAPI.controller'
import {Interface} from '../controllers/cobalt/Interface.controller'
const parseKey = (request: Request) => right(request.safe('key').string())
const parseId = (request: Request) => {
request.safe('id').present()
return right(request.input('id') as number|string)
}
Route
.group('/dash', () => {
Route.get('/')
.alias('@dash')
.calls<Dash>(Dash, dash => dash.main)
Route.get('/work-items')
.alias('@dash:work-items')
.handledBy(() => 'nope')
Route.get('/feed')
.alias('@dash:feed')
.handledBy(() => 'nope')
Route.get('/links')
.alias('@dash:links')
.handledBy(() => 'nope')
Route.get('/snippets')
.alias('@dash:snippets')
.handledBy(() => 'nope')
Route.get('/contact')
.alias('@dash:contact')
.handledBy(() => 'nope')
Route.group('/cobalt/resource', () => {
Route.get('/:key/configure')
.parameterMiddleware(parseKey)
.calls(ResourceAPI, (api: ResourceAPI) => api.configure)
Route.get('/:key')
.parameterMiddleware(parseKey)
.calls(ResourceAPI, (api: ResourceAPI) => api.read)
Route.get('/:key/:id')
.parameterMiddleware(parseKey)
.parameterMiddleware(parseId)
.calls(ResourceAPI, (api: ResourceAPI) => api.readOne)
Route.put('/:key')
.parameterMiddleware(parseKey)
.passingRequest()
.calls(ResourceAPI, (api: ResourceAPI) => api.create)
Route.patch('/:key/:id')
.parameterMiddleware(parseKey)
.parameterMiddleware(parseId)
.passingRequest()
.calls(ResourceAPI, (api: ResourceAPI) => api.update)
Route.delete('/:key/:id')
.parameterMiddleware(parseKey)
.parameterMiddleware(parseId)
.calls(ResourceAPI, (api: ResourceAPI) => api.delete)
})
Route.get('/cobalt/listing/:key')
.parameterMiddleware(parseKey)
.calls(Interface, (i: Interface) => i.listing)
Route.get('/cobalt/form/:key')
.parameterMiddleware(parseKey)
.calls(Interface, (i: Interface) => i.insertForm)
Route.get('/cobalt/form/:key/:id')
.parameterMiddleware(parseKey)
.parameterMiddleware(parseId)
.calls(Interface, (i: Interface) => i.updateForm)
})
.pre(SessionAuthMiddleware)
.pre(AuthRequiredMiddleware)
.pre(CobaltMiddleware)