db structure abstraction; async collection; update/insert queries; model saving

This commit is contained in:
garrettmills
2020-07-06 09:53:03 -05:00
parent eddb4f1fbe
commit e4f5da7ac6
73 changed files with 3301 additions and 57 deletions

View File

@@ -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 {