ormBuilder function

Builder ormBuilder(
  1. BuilderOptions options
)

Factory used by build_runner's build.yaml registration.

Implementation

builder.Builder ormBuilder(builder.BuilderOptions options) {
  if (options.config.keys.any((key) => !{'database', 'schema'}.contains(key))) {
    throw ArgumentError(
      'Use database and schema builder options, or generate_for for individual libraries.',
    );
  }
  final database = options.config['database'];
  if (database != null && !SqlDialect.values.any((d) => d.name == database)) {
    throw ArgumentError('database must be sqlite, postgres, mysql or mariadb.');
  }
  final dialect = database == null
      ? null
      : SqlDialect.values.byName(database as String);
  final schema = options.config['schema'];
  if (schema != null) {
    if (schema is! String || dialect == null) {
      throw ArgumentError(
        'Directory generation needs schema: lib/schema and database: engine.',
      );
    }
    final root = SchemaLayout.stem(schema, paths: p.url);
    if (!p.url.isWithin('lib', root)) {
      throw ArgumentError('Put the schema root under lib/.');
    }
    return _OrmDirectoryBuilder(root, dialect);
  }
  return _OrmBuilder(dialect: dialect);
}