Skip to content

Commit

Permalink
Capsule manager (#1744)
Browse files Browse the repository at this point in the history
Refactored to use the Capsule Database manager for setting up the
Flarum (mysql) connection.

This will introduce the reconnector automatically, fixing #1740
  • Loading branch information
luceos authored and franzliedke committed Feb 4, 2019
1 parent ed43ad9 commit e0becd0
Showing 1 changed file with 25 additions and 18 deletions.
43 changes: 25 additions & 18 deletions src/Database/DatabaseServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@
namespace Flarum\Database;

use Flarum\Foundation\AbstractServiceProvider;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Database\Capsule\Manager;
use Illuminate\Database\ConnectionInterface;
use Illuminate\Database\ConnectionResolver;
use Illuminate\Database\ConnectionResolverInterface;
use Illuminate\Database\Connectors\ConnectionFactory;

class DatabaseServiceProvider extends AbstractServiceProvider
{
Expand All @@ -25,30 +23,39 @@ class DatabaseServiceProvider extends AbstractServiceProvider
*/
public function register()
{
$this->app->singleton('flarum.db', function () {
$factory = new ConnectionFactory($this->app);
$this->app->singleton(Manager::class, function ($app) {
$manager = new Manager($app);

$dbConfig = $this->app->config('database');
$dbConfig['engine'] = 'InnoDB';
$dbConfig['prefix_indexes'] = true;
$connection = $factory->make($dbConfig);
$connection->setEventDispatcher($this->app->make(Dispatcher::class));
$config = $app->config('database');
$config['engine'] = 'InnoDB';
$config['prefix_indexes'] = true;

return $connection;
$manager->addConnection($config, 'flarum');

return $manager;
});

$this->app->alias('flarum.db', ConnectionInterface::class);
$this->app->singleton(ConnectionResolverInterface::class, function ($app) {
$manager = $app->make(Manager::class);
$manager->setAsGlobal();
$manager->bootEloquent();

$this->app->singleton(ConnectionResolverInterface::class, function () {
$resolver = new ConnectionResolver([
'flarum' => $this->app->make('flarum.db'),
]);
$resolver->setDefaultConnection('flarum');
$dbManager = $manager->getDatabaseManager();
$dbManager->setDefaultConnection('flarum');

return $resolver;
return $dbManager;
});

$this->app->alias(ConnectionResolverInterface::class, 'db');

$this->app->singleton(ConnectionInterface::class, function ($app) {
$resolver = $app->make(ConnectionResolverInterface::class);

return $resolver->connection();
});

$this->app->alias(ConnectionInterface::class, 'db.connection');
$this->app->alias(ConnectionInterface::class, 'flarum.db');
}

/**
Expand Down

0 comments on commit e0becd0

Please sign in to comment.