Skip to content

Commit fb5acac

Browse files
committed
Added multi database support
1 parent fac5645 commit fb5acac

File tree

13 files changed

+102
-66
lines changed

13 files changed

+102
-66
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"type": "library",
1212
"require": {
1313
"php": ">=7.1",
14-
"plokko/firebase-php":"^0.2.4",
14+
"plokko/firebase-php":"^0.3.0",
1515
"illuminate/support": ">=5.4.0"
1616
},
1717
"require-dev": {

config/laravel-firebase.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/**
55
* Enables or disables write sync with firebase database (usefull for debugging purpuses)
66
*/
7-
'read_only' => env('FIREBASEDB_READONLY',false),
7+
'read_only' => env('FIREBASEDB_READONLY', false),
88

99
/**
1010
* Firebase service account information, can be either:
@@ -32,4 +32,17 @@
3232
* @var string|null
3333
*/
3434
'FCMInvalidTokenTriggerEvent' => null,
35+
36+
/**
37+
* Specify wich Firebase Realtime DB URL to use
38+
* @var string
39+
*/
40+
'default_db' => 'default',
41+
'firebasedb_urls' => [
42+
/**
43+
* Specify the Firebase Realtime DB URL, if not set https://<project_id>.firebaseio.com/ will be used
44+
* @var string|null
45+
*/
46+
'default' => rtrim(env('FIREBASEDB_URL', null), '/'),
47+
],
3548
];

src/Channels/FcmNotificationChannel.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ function __construct()
1717
* @param \Illuminate\Notifications\Notification $notification
1818
* @return void
1919
*/
20-
public function send($notifiable,Notification $notification)
20+
public function send($notifiable, Notification $notification)
2121
{
2222
$message = $notification->toFcm($notifiable);
2323
$message->send();
2424
}
25-
}
25+
}

src/Collections/SyncsWithFirebaseCollection.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55

66
class SyncsWithFirebaseCollection extends Collection
77
{
8-
public function syncWithFirebase($withRelated=false){
9-
foreach($this AS $e){
8+
public function syncWithFirebase($withRelated = false)
9+
{
10+
foreach ($this as $e) {
1011
$e->syncWithFirebase($withRelated);
1112
}
1213
}
13-
}
14+
}

src/Exceptions/FcmTargetNotSpecifiedException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ function __construct(string $message = "FCM message target not specified!", int
1111
parent::__construct($message, $code, $previous);
1212
}
1313

14-
}
14+
}

src/Facades/FCM.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33

44

55
use Illuminate\Support\Facades\Facade;
6+
use Plokko\LaravelFirebase\FcmMessageBuilder;
67

78
class FCM extends Facade
89
{
910
protected static function getFacadeAccessor()
1011
{
11-
return \Plokko\LaravelFirebase\FcmMessageBuilder::class;
12+
return FcmMessageBuilder::class;
1213
}
13-
}
14+
}

src/Facades/FirebaseDb.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
namespace Plokko\LaravelFirebase\Facades;
33

44
use Illuminate\Support\Facades\Facade;
5-
use Plokko\Firebase\IO\Database;
5+
use Plokko\LaravelFirebase\RealtimeDb;
66

77
class FirebaseDb extends Facade
88
{
99
protected static function getFacadeAccessor()
1010
{
11-
return Database::class;
11+
return RealtimeDb::class;
1212
}
13-
}
13+
}

src/Facades/FirebaseJWT.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ class FirebaseJWT extends Facade
99
{
1010
protected static function getFacadeAccessor()
1111
{
12-
return JWT::class;
12+
return JWT::class;
1313
}
14-
}
14+
}

src/RealtimeDb.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
namespace Plokko\LaravelFirebase;
3+
4+
use App;
5+
use Plokko\Firebase\IO\Database;
6+
7+
/**
8+
* Extends base class to allow database selction
9+
*/
10+
class RealtimeDb extends Database
11+
{
12+
/**
13+
* @param string $dbName Database name to use
14+
*/
15+
public function use ($dbName): Database
16+
{
17+
return App::makeWith(Database::class, ['db' => $dbName]);
18+
}
19+
}

src/ServiceProvider.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class ServiceProvider extends \Illuminate\Support\ServiceProvider
1010
CONFIG_PATH = __DIR__ . '/../config/laravel-firebase.php';
1111

1212
protected
13-
$defer = false;
13+
$defer = false;
1414

1515
public function boot()
1616
{
@@ -27,33 +27,36 @@ public function register()
2727
);
2828

2929
// Provides the Firebase ServiceAccount
30-
$this->app->singleton(ServiceAccount::class,function($app){
30+
$this->app->singleton(ServiceAccount::class, function ($app) {
3131
$sa = new ServiceAccount(config('laravel-firebase.service_account'));
3232
// Add cache handler if cache is enabled
33-
if(config('laravel-firebase.cache')){
33+
if (config('laravel-firebase.cache')) {
3434
$sa->setCacheHandler(new ServiceAccountCacheItemPool());
3535
}
3636
return $sa;
3737
});
3838

3939
// Provide Firebase Database
40-
$this->app->singleton(Database::class,function($app){
41-
return (config('laravel-firebase.read_only'))?
42-
new ReadonlyDatabase($app->make(ServiceAccount::class)):
43-
new Database($app->make(ServiceAccount::class));
40+
$this->app->singleton(Database::class, function ($app, array $opt = []) {
41+
$dbName = $opt['db'] ?? config('laravel-firebase.default_db');
42+
$dbUrl = config('laravel-firebase.firebasedb_urls.' . $dbName);
43+
44+
return (config('laravel-firebase.read_only')) ?
45+
new ReadonlyDatabase($app->make(ServiceAccount::class), $dbUrl) :
46+
new Database($app->make(ServiceAccount::class), $dbUrl);
4447
});
4548

46-
$this->app->bind(FcmMessageBuilder::class,function($app){
49+
$this->app->bind(FcmMessageBuilder::class, function ($app) {
4750
$fcm = new FcmMessageBuilder($app->make(ServiceAccount::class));
4851

4952
$event = config('laravel-firebase.FCMInvalidTokenTriggerEvent');
50-
if($event){
53+
if ($event) {
5154
$fcm->setInvalidTokenEvent($event);
5255
}
5356
return $fcm;
5457
});
5558

56-
$this->app->singleton(JWT::class,function($app){
59+
$this->app->singleton(JWT::class, function ($app) {
5760
return new JWT($app->make(ServiceAccount::class));
5861
});
5962
}

0 commit comments

Comments
 (0)