import {CanonicalDefinition} from '../../lib/src/unit/Canonical.ts' import {Model} from './model/Model.ts' import {Unit} from '../../lib/src/lifecycle/decorators.ts' import {StaticCanonical} from '../../lib/src/unit/StaticCanonical.ts' /** * Canonical unit which loads ORM models from their directory. * @extends StaticCanonical */ @Unit() export default class ModelsUnit extends StaticCanonical, typeof Model> { protected base_path = './app/models' protected canonical_item = 'model' protected suffix = '.model.ts' public async init_canonical_item(def: CanonicalDefinition) { const item = await super.init_canonical_item(def) if ( !(item.prototype instanceof Model) ) { throw new TypeError(`Invalid model definition: ${def.original_name}. Models must extend from Daton ORM's base Model class.`) } return item } }