instantiateAdaptor<C extends Object, A extends DBAdapter<C>> static method
FutureOr<A>
instantiateAdaptor<
C extends Object, A extends DBAdapter<C>>( - List<MapEntry<DBAdapterInstantiator<C, A>, Map<String, dynamic>>> instantiators,
- Map<String, dynamic> config, {
- int minConnections = 1,
- int maxConnections = 3,
- EntityRepositoryProvider? parentRepositoryProvider,
- String? workingPath,
})
Implementation
static FutureOr<A>
instantiateAdaptor<C extends Object, A extends DBAdapter<C>>(
List<MapEntry<DBAdapterInstantiator<C, A>, Map<String, dynamic>>>
instantiators,
Map<String, dynamic> config,
{int minConnections = 1,
int maxConnections = 3,
EntityRepositoryProvider? parentRepositoryProvider,
String? workingPath}) {
if (instantiators.isEmpty) {
throw StateError(
"No `$A` instantiator for `config` keys: ${config.keys.toList()}");
}
var asyncInstantiators = <Future<A>>[];
for (var e in instantiators) {
var f = e.key;
var conf = e.value;
var ret = f(conf,
minConnections: minConnections,
maxConnections: maxConnections,
parentRepositoryProvider: parentRepositoryProvider,
workingPath: workingPath);
if (ret == null) {
continue;
} else if (ret is A) {
return ret;
} else if (ret is Future<A>) {
asyncInstantiators.add(ret);
}
}
if (asyncInstantiators.isNotEmpty) {
return asyncInstantiators.resolveAll().then((l) {
for (var e in l) {
return e;
}
throw StateError(
"Can't async instantiate an `$A` for `config`: $config");
});
}
throw StateError("Can't instantiate an `$A` for `config`: $config");
}