From 9ed3994988aa15a4e599adc31e813756f0d039c7 Mon Sep 17 00:00:00 2001 From: Anton Komarev <1849174+antonkomarev@users.noreply.github.com> Date: Sun, 23 Jun 2019 17:56:46 +0300 Subject: [PATCH] Add configurable database connection (#68) Add database connection configuration --- config/love.php | 33 +++++++++++++++++++ ...7_22_000100_create_love_reacters_table.php | 2 +- ..._22_001000_create_love_reactants_table.php | 2 +- ...01500_create_love_reaction_types_table.php | 2 +- ..._22_002000_create_love_reactions_table.php | 2 +- ..._love_reactant_reaction_counters_table.php | 2 +- ...te_love_reactant_reaction_totals_table.php | 2 +- src/LoveServiceProvider.php | 17 ++++++++++ src/Reactant/Models/Reactant.php | 2 +- .../Models/ReactionCounter.php | 2 +- .../ReactionTotal/Models/ReactionTotal.php | 2 +- src/Reacter/Models/Reacter.php | 2 +- src/Reaction/Models/Reaction.php | 2 +- src/ReactionType/Models/ReactionType.php | 2 +- src/Support/Database/Eloquent/Model.php | 30 +++++++++++++++++ src/Support/Database/Migration.php | 30 +++++++++++++++++ 16 files changed, 122 insertions(+), 12 deletions(-) create mode 100644 config/love.php create mode 100644 src/Support/Database/Eloquent/Model.php create mode 100644 src/Support/Database/Migration.php diff --git a/config/love.php b/config/love.php new file mode 100644 index 00000000..8068788b --- /dev/null +++ b/config/love.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +return [ + + /* + |-------------------------------------------------------------------------- + | Love Storage Driver + |-------------------------------------------------------------------------- + | + | This configuration options determines the storage driver that will + | be used to store Love's data. In addition, you may set any + | custom options as needed by the particular driver you choose. + | + */ + + 'storage' => [ + 'database' => [ + 'connection' => env('DB_CONNECTION', 'mysql'), + ], + ], + +]; diff --git a/database/migrations/2018_07_22_000100_create_love_reacters_table.php b/database/migrations/2018_07_22_000100_create_love_reacters_table.php index b8bf3a42..f78a534e 100644 --- a/database/migrations/2018_07_22_000100_create_love_reacters_table.php +++ b/database/migrations/2018_07_22_000100_create_love_reacters_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/database/migrations/2018_07_22_001000_create_love_reactants_table.php b/database/migrations/2018_07_22_001000_create_love_reactants_table.php index 7e8da411..a75d4195 100644 --- a/database/migrations/2018_07_22_001000_create_love_reactants_table.php +++ b/database/migrations/2018_07_22_001000_create_love_reactants_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/database/migrations/2018_07_22_001500_create_love_reaction_types_table.php b/database/migrations/2018_07_22_001500_create_love_reaction_types_table.php index 2fec17e8..c598a410 100644 --- a/database/migrations/2018_07_22_001500_create_love_reaction_types_table.php +++ b/database/migrations/2018_07_22_001500_create_love_reaction_types_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/database/migrations/2018_07_22_002000_create_love_reactions_table.php b/database/migrations/2018_07_22_002000_create_love_reactions_table.php index c63b39b9..41357de2 100644 --- a/database/migrations/2018_07_22_002000_create_love_reactions_table.php +++ b/database/migrations/2018_07_22_002000_create_love_reactions_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/database/migrations/2018_07_25_000000_create_love_reactant_reaction_counters_table.php b/database/migrations/2018_07_25_000000_create_love_reactant_reaction_counters_table.php index 8c3ccf3f..6fb25df8 100644 --- a/database/migrations/2018_07_25_000000_create_love_reactant_reaction_counters_table.php +++ b/database/migrations/2018_07_25_000000_create_love_reactant_reaction_counters_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/database/migrations/2018_07_25_001000_create_love_reactant_reaction_totals_table.php b/database/migrations/2018_07_25_001000_create_love_reactant_reaction_totals_table.php index b1dcba2c..ab176e01 100644 --- a/database/migrations/2018_07_25_001000_create_love_reactant_reaction_totals_table.php +++ b/database/migrations/2018_07_25_001000_create_love_reactant_reaction_totals_table.php @@ -11,7 +11,7 @@ declare(strict_types=1); -use Illuminate\Database\Migrations\Migration; +use Cog\Laravel\Love\Support\Database\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; diff --git a/src/LoveServiceProvider.php b/src/LoveServiceProvider.php index 0915cab8..a992f0c0 100644 --- a/src/LoveServiceProvider.php +++ b/src/LoveServiceProvider.php @@ -45,6 +45,7 @@ public function register(): void */ public function boot(): void { + $this->configure(); $this->registerConsoleCommands(); $this->registerObservers(); $this->registerPublishes(); @@ -88,6 +89,10 @@ private function registerConsoleCommands(): void private function registerPublishes(): void { if ($this->app->runningInConsole()) { + $this->publishes([ + __DIR__ . '/../config/love.php' => config_path('love.php'), + ], 'love-config'); + $this->publishes([ __DIR__ . '/../database/migrations' => database_path('migrations'), ], 'love-migrations'); @@ -116,4 +121,16 @@ private function registerListeners(): void Event::listen(ReactionHasBeenAdded::class, IncrementAggregates::class); Event::listen(ReactionHasBeenRemoved::class, DecrementAggregates::class); } + + /** + * Merge Love configuration with the application configuration. + * + * @return void + */ + private function configure(): void + { + if (!$this->app->configurationIsCached()) { + $this->mergeConfigFrom(__DIR__ . '/../config/love.php', 'love'); + } + } } diff --git a/src/Reactant/Models/Reactant.php b/src/Reactant/Models/Reactant.php index b5f04422..95ab6e73 100644 --- a/src/Reactant/Models/Reactant.php +++ b/src/Reactant/Models/Reactant.php @@ -28,7 +28,7 @@ use Cog\Laravel\Love\Reactant\ReactionTotal\Models\NullReactionTotal; use Cog\Laravel\Love\Reactant\ReactionTotal\Models\ReactionTotal; use Cog\Laravel\Love\Reaction\Models\Reaction; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\MorphTo; diff --git a/src/Reactant/ReactionCounter/Models/ReactionCounter.php b/src/Reactant/ReactionCounter/Models/ReactionCounter.php index 5f0220d2..48a689b4 100644 --- a/src/Reactant/ReactionCounter/Models/ReactionCounter.php +++ b/src/Reactant/ReactionCounter/Models/ReactionCounter.php @@ -18,7 +18,7 @@ use Cog\Contracts\Love\ReactionType\Models\ReactionType as ReactionTypeContract; use Cog\Laravel\Love\Reactant\Models\Reactant; use Cog\Laravel\Love\ReactionType\Models\ReactionType; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class ReactionCounter extends Model implements diff --git a/src/Reactant/ReactionTotal/Models/ReactionTotal.php b/src/Reactant/ReactionTotal/Models/ReactionTotal.php index cf1977b7..6ea9c939 100644 --- a/src/Reactant/ReactionTotal/Models/ReactionTotal.php +++ b/src/Reactant/ReactionTotal/Models/ReactionTotal.php @@ -16,7 +16,7 @@ use Cog\Contracts\Love\Reactant\Models\Reactant as ReactantContract; use Cog\Contracts\Love\Reactant\ReactionTotal\Models\ReactionTotal as ReactionTotalContract; use Cog\Laravel\Love\Reactant\Models\Reactant; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class ReactionTotal extends Model implements diff --git a/src/Reacter/Models/Reacter.php b/src/Reacter/Models/Reacter.php index 3e70619c..11712cf8 100644 --- a/src/Reacter/Models/Reacter.php +++ b/src/Reacter/Models/Reacter.php @@ -22,7 +22,7 @@ use Cog\Contracts\Love\Reaction\Exceptions\ReactionNotExists; use Cog\Contracts\Love\ReactionType\Models\ReactionType as ReactionTypeContract; use Cog\Laravel\Love\Reaction\Models\Reaction; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; diff --git a/src/Reaction/Models/Reaction.php b/src/Reaction/Models/Reaction.php index b3159f4e..dda84d6a 100644 --- a/src/Reaction/Models/Reaction.php +++ b/src/Reaction/Models/Reaction.php @@ -20,7 +20,7 @@ use Cog\Laravel\Love\Reactant\Models\Reactant; use Cog\Laravel\Love\Reacter\Models\Reacter; use Cog\Laravel\Love\ReactionType\Models\ReactionType; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class Reaction extends Model implements diff --git a/src/ReactionType/Models/ReactionType.php b/src/ReactionType/Models/ReactionType.php index 1c376909..5a482e0a 100644 --- a/src/ReactionType/Models/ReactionType.php +++ b/src/ReactionType/Models/ReactionType.php @@ -16,7 +16,7 @@ use Cog\Contracts\Love\ReactionType\Exceptions\ReactionTypeInvalid; use Cog\Contracts\Love\ReactionType\Models\ReactionType as ReactionTypeContract; use Cog\Laravel\Love\Reaction\Models\Reaction; -use Illuminate\Database\Eloquent\Model; +use Cog\Laravel\Love\Support\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; final class ReactionType extends Model implements diff --git a/src/Support/Database/Eloquent/Model.php b/src/Support/Database/Eloquent/Model.php new file mode 100644 index 00000000..97c157eb --- /dev/null +++ b/src/Support/Database/Eloquent/Model.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Cog\Laravel\Love\Support\Database\Eloquent; + +use Illuminate\Database\Eloquent\Model as IlluminateModel; +use Illuminate\Support\Facades\Config; + +abstract class Model extends IlluminateModel +{ + /** + * Get the current connection name for the model. + * + * @return null|string + */ + public function getConnectionName(): ?string + { + return Config::get('love.storage.database.connection'); + } +} diff --git a/src/Support/Database/Migration.php b/src/Support/Database/Migration.php new file mode 100644 index 00000000..9a9ae034 --- /dev/null +++ b/src/Support/Database/Migration.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Cog\Laravel\Love\Support\Database; + +use Illuminate\Database\Migrations\Migration as IlluminateMigration; +use Illuminate\Support\Facades\Config; + +abstract class Migration extends IlluminateMigration +{ + /** + * Get the migration connection name. + * + * @return null|string + */ + public function getConnection(): ?string + { + return Config::get('love.storage.database.connection'); + } +}