From 4fe6def9ffe7037529735da5a7f05ac59359c145 Mon Sep 17 00:00:00 2001 From: Saiht Date: Fri, 12 Jan 2024 14:15:39 +0400 Subject: [PATCH 1/3] feat(firestore): allow firestore database override --- config/firebase.php | 10 ++++++++++ src/FirebaseProjectManager.php | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/config/firebase.php b/config/firebase.php index fe567e6..6ee718c 100644 --- a/config/firebase.php +++ b/config/firebase.php @@ -62,6 +62,16 @@ 'tenant_id' => env('FIREBASE_AUTH_TENANT_ID'), ], + /* + * ------------------------------------------------------------------------ + * Firestore Component + * ------------------------------------------------------------------------ + */ + + 'firestore' => [ + 'database' => null, + ], + /* * ------------------------------------------------------------------------ * Firebase Realtime Database diff --git a/src/FirebaseProjectManager.php b/src/FirebaseProjectManager.php index 2081d14..867795b 100644 --- a/src/FirebaseProjectManager.php +++ b/src/FirebaseProjectManager.php @@ -64,6 +64,10 @@ protected function configure(string $name): FirebaseProject $config = $this->configuration($name); + $factory = $factory->withFirestoreDatabase( + $config['firestore']['database'] ?? '(default)' + ); + if ($tenantId = $config['auth']['tenant_id'] ?? null) { $factory = $factory->withTenantId($tenantId); } From 5a2f07fefdebda9db2d01867464c8e32893991ac Mon Sep 17 00:00:00 2001 From: Saiht Date: Fri, 12 Jan 2024 14:16:31 +0400 Subject: [PATCH 2/3] style: apply pint --- src/FirebaseProjectManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FirebaseProjectManager.php b/src/FirebaseProjectManager.php index 867795b..aba27eb 100644 --- a/src/FirebaseProjectManager.php +++ b/src/FirebaseProjectManager.php @@ -25,7 +25,7 @@ public function __construct(Container $app) $this->app = $app; } - public function project(string $name = null): FirebaseProject + public function project(?string $name = null): FirebaseProject { $name = $name ?? $this->getDefaultProject(); From 523063447872f7553d123367f9b8875761e477a9 Mon Sep 17 00:00:00 2001 From: Saiht Date: Fri, 12 Jan 2024 14:16:42 +0400 Subject: [PATCH 3/3] test(firestore): allow firestore database override --- tests/FirebaseProjectManagerTest.php | 30 +++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/FirebaseProjectManagerTest.php b/tests/FirebaseProjectManagerTest.php index 9669541..50366e3 100644 --- a/tests/FirebaseProjectManagerTest.php +++ b/tests/FirebaseProjectManagerTest.php @@ -276,6 +276,34 @@ public function it_uses_the_laravel_cache_as_verifier_cache(): void $this->assertInstanceOf(CacheItemPoolInterface::class, $property->getValue($factory)); } + /** + * @test + */ + public function it_use_the_default_firestore_database(): void + { + config(['firebase.projects.app.firestore.database' => null]); + $projectName = $this->app->config->get('firebase.default'); + $factory = $this->factoryForProject($projectName); + + $property = $this->getAccessibleProperty($factory, 'firestoreClientConfig'); + + $this->assertEquals('(default)', $property->getValue($factory)['database']); + } + + /** + * @test + */ + public function it_overrides_the_default_firestore_database(): void + { + config(['firebase.projects.app.firestore.database' => 'override-database']); + $projectName = $this->app->config->get('firebase.default'); + $factory = $this->factoryForProject($projectName); + + $property = $this->getAccessibleProperty($factory, 'firestoreClientConfig'); + + $this->assertEquals('override-database', $property->getValue($factory)['database']); + } + /** * @test */ @@ -289,7 +317,7 @@ public function it_uses_the_laravel_cache_as_auth_token_cache(): void $this->assertInstanceOf(CacheItemPoolInterface::class, $property->getValue($factory)); } - private function factoryForProject(string $project = null): Factory + private function factoryForProject(?string $project = null): Factory { $project = $this->app->make(FirebaseProjectManager::class)->project($project);