*/ function make( string $kind, array $parameters ) : interface_database { switch ($kind) { default: { throw (new \Exception(sprintf('invalid database kind "%s"', $kind))); break; } case 'sqlite': { return ( implementation_sqlite::make( $parameters['path'], $parameters['verbosity'] ?? 0 ) ); break; } case 'mysql': { return ( implementation_mysql::make( $parameters['host'], $parameters['port'], $parameters['schema'], $parameters['username'], $parameters['password'] ) ); break; } case 'postgresql': { return ( implementation_postgresql::make( $parameters['host'], $parameters['port'], $parameters['schema'], $parameters['username'], $parameters['password'] ) ); break; } } } ?>