1111use Patchlevel \ODM \Hydrator \ODMExtension ;
1212use Patchlevel \ODM \Metadata \AttributeDocumentMetadataFactory ;
1313use Patchlevel \ODM \Metadata \DocumentMetadataFactory ;
14- use Patchlevel \Rango \Database ;
14+ use Patchlevel \Rango \Client ;
1515
1616final class RangoRepositoryManager implements RepositoryManager
1717{
1818 /** @var array<string, RangoRepository<object>> */
1919 private array $ repositories = [];
2020
2121 public function __construct (
22- private readonly Database $ database ,
22+ private readonly Client $ client ,
2323 private readonly DocumentMetadataFactory $ metadataFactory ,
2424 private readonly Hydrator $ hydrator ,
25+ private readonly string $ defaultDatabase = 'public ' ,
2526 ) {
2627 }
2728
@@ -38,8 +39,10 @@ public function get(string $documentClass): RangoRepository
3839 return $ this ->repositories [$ documentClass ];
3940 }
4041
42+ $ metadata = $ this ->metadataFactory ->metadata ($ documentClass );
43+
4144 $ this ->repositories [$ documentClass ] = new RangoRepository (
42- $ this ->database ,
45+ $ this ->client -> selectDatabase ( $ metadata -> database ?: $ this -> defaultDatabase ) ,
4346 $ this ->metadataFactory ->metadata ($ documentClass ),
4447 $ this ->hydrator ,
4548 );
@@ -48,7 +51,7 @@ public function get(string $documentClass): RangoRepository
4851 }
4952
5053 /** @param list<Extension> $extensions */
51- public function create (Database $ database , array $ extensions = []): self
54+ public function create (Client $ client , array $ extensions = []): self
5255 {
5356 $ metadataFactory = new AttributeDocumentMetadataFactory ();
5457
@@ -60,6 +63,6 @@ public function create(Database $database, array $extensions = []): self
6063 $ builder ->useExtension ($ extension );
6164 }
6265
63- return new self ($ database , $ metadataFactory , $ builder ->build ());
66+ return new self ($ client , $ metadataFactory , $ builder ->build ());
6467 }
6568}
0 commit comments