*/ class RepositoryServiceProvider extends ServiceProvider { /** * Register the service provider. * * @return void */ public function register() { $this->registerMetricRepository(); } /** * Register the metric repository. * * @return void */ protected function registerMetricRepository() { $this->app->singleton(MetricRepository::class, function (Container $app) { $config = $app->make(ConfigRepository::class); $driver = $config->get('database.default'); if ($driver == 'mysql') { $repository = new MetricMySqlRepository($config); } elseif ($driver == 'pgsql') { $repository = new MetricPgSqlRepository($config); } elseif ($driver == 'sqlite') { $repository = new MetricSqliteRepository($config); } $dates = $app->make(DateFactory::class); return new MetricRepository($repository, $dates); }); } }