Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
CampaignsDatabaseHelper
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDBConnection
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
 waitForReplication
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare( strict_types=1 );
4
5namespace MediaWiki\Extension\CampaignEvents\Database;
6
7use MediaWiki\Extension\CampaignEvents\Utils;
8use Wikimedia\Rdbms\IDatabase;
9use Wikimedia\Rdbms\IReadableDatabase;
10use Wikimedia\Rdbms\LBFactory;
11
12class 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}