registerConnectionsFromConfig function

Future<OrmConnectionHandle> registerConnectionsFromConfig({
  1. required Directory root,
  2. required OrmProjectConfig config,
  3. ConnectionManager? manager,
  4. ModelRegistry? registry,
  5. String? targetConnection,
})

Registers every entry from config with ConnectionManager.defaultManager.

Returns the handle for targetConnection after the matching driver callback registers the tenant.

Implementation

Future<OrmConnectionHandle> registerConnectionsFromConfig({
  required Directory root,
  required OrmProjectConfig config,
  ConnectionManager? manager,
  ModelRegistry? registry,
  String? targetConnection,
}) async {
  final connectionManager = manager ?? ConnectionManager.defaultManager;
  final modelRegistry = registry ?? ModelRegistry();
  final selectedTarget = (targetConnection ?? config.connectionName).trim();
  OrmConnectionHandle? targetHandle;

  for (final entry in config.connections.entries) {
    final connectionName = _connectionNameForDefinition(root, entry.value);
    if (connectionManager.isRegistered(connectionName)) {
      if (entry.key != selectedTarget) continue;
      await connectionManager.unregister(connectionName);
    }

    final handler = DriverRegistry.driver(entry.value.driver.type);
    final handle = await handler(
      root: root,
      manager: connectionManager,
      registry: modelRegistry,
      connectionName: connectionName,
      definition: entry.value,
    );

    if (entry.key == selectedTarget) {
      targetHandle = handle;
    }
  }

  return targetHandle ??
      (throw StateError('Connection $selectedTarget was not registered.'));
}