resolveDatasource method

ResolvedDatasourceConfig resolveDatasource(
  1. LoadedSchemaDocument loaded, {
  2. String? datasourceName,
  3. required String expectedProvider,
})

Resolves datasource settings for a loaded schema.

Implementation

ResolvedDatasourceConfig resolveDatasource(
  LoadedSchemaDocument loaded, {
  String? datasourceName,
  required String expectedProvider,
}) {
  final datasource = _selectDatasource(loaded.schema, datasourceName);
  if (datasource == null) {
    throw FormatException(
      'Schema does not declare a datasource block and no connection override was provided.',
    );
  }

  final provider = _resolveScalarValue(
    datasource.properties['provider'],
    propertyName: 'datasource ${datasource.name}.provider',
  );
  if (provider != expectedProvider) {
    throw FormatException(
      'Datasource "${datasource.name}" uses provider "$provider", expected "$expectedProvider".',
    );
  }

  final rawUrl = _resolveScalarValue(
    datasource.properties['url'],
    propertyName: 'datasource ${datasource.name}.url',
  );

  return ResolvedDatasourceConfig(
    name: datasource.name,
    provider: provider,
    url:
        datasourceUrlResolver?.call(loaded.filePath, rawUrl, provider) ??
        rawUrl,
  );
}