db structure abstraction; async collection; update/insert queries; model saving
This commit is contained in:
@@ -33,6 +33,16 @@ class Container {
|
||||
private factories: Collection<AbstractFactory> = new Collection<AbstractFactory>()
|
||||
private instances: Collection<InstanceRef> = new Collection<InstanceRef>()
|
||||
|
||||
constructor() {
|
||||
this.register(Container)
|
||||
this.instances.push({
|
||||
key: Container,
|
||||
value: this,
|
||||
})
|
||||
|
||||
this.register_singleton('injector', this)
|
||||
}
|
||||
|
||||
register(dependency: Instantiable<any>) {
|
||||
if ( this.resolve(dependency) )
|
||||
throw new DuplicateFactoryKeyError(dependency)
|
||||
@@ -134,14 +144,22 @@ class Container {
|
||||
}
|
||||
|
||||
make(target: DependencyKey, ...parameters: any[]) {
|
||||
if ( this.has_key(target) ) {
|
||||
if ( this.has_key(target) )
|
||||
return this.resolve_and_create(target, ...parameters)
|
||||
}
|
||||
else if ( typeof target !== 'string' )
|
||||
return this.produce_factory(new Factory(target), parameters)
|
||||
else
|
||||
throw new TypeError(`Invalid or unknown make target: ${target}`)
|
||||
}
|
||||
|
||||
get_dependencies(target: DependencyKey): Collection<DependencyKey> {
|
||||
const factory = this.resolve(target)
|
||||
|
||||
if ( !factory )
|
||||
throw new InvalidDependencyKeyError(target)
|
||||
|
||||
return factory.get_dependency_keys().pluck('key')
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
|
||||
Reference in New Issue
Block a user