2020-07-06 14:53:03 +00:00
|
|
|
import { InstantiableCanonical } from './InstantiableCanonical.ts'
|
|
|
|
import { CanonicalDefinition } from './Canonical.ts'
|
|
|
|
import Controller from '../http/Controller.ts'
|
|
|
|
import { Unit } from '../lifecycle/decorators.ts'
|
|
|
|
|
2020-08-17 14:44:23 +00:00
|
|
|
/**
|
|
|
|
* Canonical method which loads controllers, and returns an instance of the controller.
|
|
|
|
* @extends InstantiableCanonical
|
|
|
|
*/
|
2020-07-06 14:53:03 +00:00
|
|
|
@Unit()
|
2020-07-21 03:54:25 +00:00
|
|
|
export default class Controllers extends InstantiableCanonical<Controller> {
|
2020-07-06 14:53:03 +00:00
|
|
|
protected base_path = './app/http/controllers'
|
|
|
|
protected canonical_item = 'controller'
|
|
|
|
protected suffix = '.controller.ts'
|
|
|
|
|
|
|
|
public async init_canonical_item(def: CanonicalDefinition) {
|
|
|
|
const item = await super.init_canonical_item(def)
|
|
|
|
if ( !(item instanceof Controller) ) {
|
|
|
|
throw new TypeError(`Invalid controller definition: ${def.original_name}. Controllers must extend from Daton's base Controller class.`)
|
|
|
|
}
|
|
|
|
|
|
|
|
return item
|
|
|
|
}
|
|
|
|
}
|