ormBuilder function
Builder
ormBuilder(
- 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);
}