Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 5 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
CampaignsDatabaseHelper | |
0.00% |
0 / 5 |
|
0.00% |
0 / 3 |
20 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getDBConnection | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
6 | |||
waitForReplication | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | declare( strict_types=1 ); |
4 | |
5 | namespace MediaWiki\Extension\CampaignEvents\Database; |
6 | |
7 | use MediaWiki\Extension\CampaignEvents\Utils; |
8 | use Wikimedia\Rdbms\IDatabase; |
9 | use Wikimedia\Rdbms\IReadableDatabase; |
10 | use Wikimedia\Rdbms\LBFactory; |
11 | |
12 | class CampaignsDatabaseHelper { |
13 | public const SERVICE_NAME = 'CampaignEventsDatabaseHelper'; |
14 | |
15 | private LBFactory $lbFactory; |
16 | |
17 | /** |
18 | * @param LBFactory $lbFactory |
19 | */ |
20 | public function __construct( LBFactory $lbFactory ) { |
21 | $this->lbFactory = $lbFactory; |
22 | } |
23 | |
24 | /** |
25 | * @param int $type DB_PRIMARY or DB_REPLICA |
26 | * @return IDatabase|IReadableDatabase |
27 | */ |
28 | public function getDBConnection( int $type ): IReadableDatabase { |
29 | return $type === DB_REPLICA |
30 | ? $this->lbFactory->getReplicaDatabase( Utils::VIRTUAL_DB_DOMAIN ) |
31 | : $this->lbFactory->getPrimaryDatabase( Utils::VIRTUAL_DB_DOMAIN ); |
32 | } |
33 | |
34 | /** |
35 | * Waits for the replica DBs to catch up to the current primary position |
36 | */ |
37 | public function waitForReplication(): void { |
38 | $this->lbFactory->waitForReplication(); |
39 | } |
40 | } |