PostgresEndpoint.fromOptions constructor
Parses options — either a lone url key or manual keys; mixing the two
(or passing an unknown key) throws ArgumentError.
Implementation
factory PostgresEndpoint.fromOptions(Map<String, Object?> options) {
for (final key in options.keys) {
if (!_knownKeys.contains(key)) {
throw ArgumentError(
"postgres adapter: unknown database option '$key' "
'(expected: ${_knownKeys.join(', ')}).',
);
}
}
if (options['url'] case final Object? url?) {
if (options.length > 1) {
throw ArgumentError(
"postgres adapter: 'url' cannot be combined with other "
'database options.',
);
}
if (url is! String || url.trim().isEmpty) {
throw ArgumentError(
"postgres adapter: 'url' must be a non-empty string.",
);
}
return PostgresEndpoint._parseUrl(url.trim());
}
final database = options['database'];
if (database is! String || database.trim().isEmpty) {
throw ArgumentError(
"postgres adapter: `database:` requires a non-empty 'database' name "
"(or a single 'url').",
);
}
return PostgresEndpoint(
host: _string(options, 'host') ?? 'localhost',
port: _port(options['port']),
database: database.trim(),
username: _string(options, 'username') ?? 'postgres',
password: _string(options, 'password') ?? '',
ssl: _bool(options, 'ssl') ?? true,
);
}