From c0ba35c771d7d830361822cfbaba67a837c54af6 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 18 Jun 2017 14:43:56 +0300 Subject: [PATCH] Multi-db fixes --- app/Models/Invitation.php | 7 +++++++ app/Models/LookupInvitation.php | 26 ++++++++++++++++++++++++++ config/database.php | 6 +++--- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/Models/Invitation.php b/app/Models/Invitation.php index c3d142e8cb5d..1aa6860ebf41 100644 --- a/app/Models/Invitation.php +++ b/app/Models/Invitation.php @@ -171,6 +171,13 @@ Invitation::creating(function ($invitation) ]); }); +Invitation::updating(function ($invitation) { + $dirty = $invitation->getDirty(); + if (array_key_exists('message_id', $dirty)) { + LookupInvitation::updateInvitation($invitation->account->account_key, $invitation); + } +}); + Invitation::deleted(function ($invitation) { if ($invitation->forceDeleting) { diff --git a/app/Models/LookupInvitation.php b/app/Models/LookupInvitation.php index 7829a5c9a520..b8082a5e2145 100644 --- a/app/Models/LookupInvitation.php +++ b/app/Models/LookupInvitation.php @@ -18,4 +18,30 @@ class LookupInvitation extends LookupModel 'message_id', ]; + public static function updateInvitation($accountKey, $invitation) + { + if (! env('MULTI_DB_ENABLED')) { + return; + } + + if (! $invitation->message_id) { + return; + } + + $current = config('database.default'); + config(['database.default' => DB_NINJA_LOOKUP]); + + $lookupAccount = LookupAccount::whereAccountKey($accountKey) + ->firstOrFail(); + + $lookupInvitation = LookupInvitation::whereLookupAccountId($lookupAccount->id) + ->whereInvitationKey($invitation->invitation_key) + ->firstOrFail(); + + $lookupInvitation->message_id = $invitation->message_id; + $lookupInvitation->save(); + + config(['database.default' => $current]); + } + } diff --git a/config/database.php b/config/database.php index e5f0330b2d44..6864538968a7 100644 --- a/config/database.php +++ b/config/database.php @@ -63,7 +63,7 @@ return [ // multi-database setup 'db-ninja-0' => [ 'driver' => 'mysql', - 'host' => env('DB_HOST', env('DB_HOST0', 'localhost')), + 'host' => env('DB_HOST0', env('DB_HOST', 'localhost')), 'database' => env('DB_DATABASE0', env('DB_DATABASE', 'forge')), 'username' => env('DB_USERNAME0', env('DB_USERNAME', 'forge')), 'password' => env('DB_PASSWORD0', env('DB_PASSWORD', '')), @@ -76,7 +76,7 @@ return [ 'db-ninja-1' => [ 'driver' => 'mysql', - 'host' => env('DB_HOST', env('DB_HOST1', 'localhost')), + 'host' => env('DB_HOST1', env('DB_HOST', 'localhost')), 'database' => env('DB_DATABASE1', env('DB_DATABASE', 'forge')), 'username' => env('DB_USERNAME1', env('DB_USERNAME', 'forge')), 'password' => env('DB_PASSWORD1', env('DB_PASSWORD', '')), @@ -89,7 +89,7 @@ return [ 'db-ninja-2' => [ 'driver' => 'mysql', - 'host' => env('DB_HOST', env('DB_HOST2', 'localhost')), + 'host' => env('DB_HOST2', env('DB_HOST', 'localhost')), 'database' => env('DB_DATABASE2', env('DB_DATABASE', 'forge')), 'username' => env('DB_USERNAME2', env('DB_USERNAME', 'forge')), 'password' => env('DB_PASSWORD2', env('DB_PASSWORD', '')),