Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
DatabaseCreator
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 2
42
0.00% covered (danger)
0.00%
0 / 1
 createInstance
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
30
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 existsLocally
n/a
0 / 0
n/a
0 / 0
0
 existsInLoadBalancer
n/a
0 / 0
n/a
0 / 0
0
 createLocally
n/a
0 / 0
n/a
0 / 0
0
 createInLoadBalancer
n/a
0 / 0
n/a
0 / 0
0
1<?php
2
3namespace MediaWiki\Installer;
4
5use MediaWiki\Installer\Task\ITaskContext;
6use MediaWiki\MainConfigNames;
7use MediaWiki\Status\Status;
8use Wikimedia\Rdbms\ILoadBalancer;
9
10/**
11 * Helper for creating databases
12 *
13 * @since 1.44
14 */
15abstract class DatabaseCreator {
16    /** @var ITaskContext */
17    protected $context;
18
19    /**
20     * @internal use Task::getDatabaseCreator()
21     *
22     * @param ITaskContext $context
23     * @return DatabaseCreator
24     */
25    public static function createInstance( ITaskContext $context ): DatabaseCreator {
26        $type = $context->getConfigVar( MainConfigNames::DBtype );
27
28        switch ( $type ) {
29            case 'mysql':
30                return new MysqlDatabaseCreator( $context );
31            case 'postgres':
32                return new PostgresDatabaseCreator( $context );
33            case 'sqlite':
34                return new SqliteDatabaseCreator( $context );
35            default:
36                throw new \InvalidArgumentException( "Unknown DBMS type \"$type\"" );
37        }
38    }
39
40    protected function __construct( ITaskContext $context ) {
41        $this->context = $context;
42    }
43
44    /**
45     * Check if a database exists on the local cluster or context
46     *
47     * @param string $database
48     * @return bool
49     */
50    abstract public function existsLocally( $database );
51
52    /**
53     * Check if a database exists in the specified LoadBalancer which may be
54     * for an external cluster.
55     *
56     * @param ILoadBalancer $loadBalancer
57     * @param string $database
58     * @return bool
59     */
60    abstract public function existsInLoadBalancer( ILoadBalancer $loadBalancer, $database );
61
62    /**
63     * Create a database in the local cluster or install context
64     *
65     * @param string $database
66     * @return Status
67     */
68    abstract public function createLocally( $database ): Status;
69
70    /**
71     * Create a database in the specified LoadBalancer which may be for an
72     * external cluster.
73     *
74     * @param ILoadBalancer $loadBalancer
75     * @param string $database
76     * @return Status
77     */
78    abstract public function createInLoadBalancer( ILoadBalancer $loadBalancer, $database ): Status;
79}