MediaWiki master
NetworkedDatabaseCreator.php
Go to the documentation of this file.
1<?php
2
3namespace MediaWiki\Installer;
4
10
20 public function existsLocally( $database ) {
21 $connStatus = $this->context->getConnection( ITaskContext::CONN_CREATE_DATABASE );
22 if ( !$connStatus->isOK() ) {
23 return false;
24 }
25 return $this->existsInConnection( $connStatus->getDB(), $database );
26 }
27
29 public function existsInLoadBalancer( ILoadBalancer $loadBalancer, $database ) {
30 $conn = $loadBalancer->getConnection( DB_PRIMARY, [], DatabaseDomain::newUnspecified()->getId() );
31 return $this->existsInConnection( $conn, $database );
32 }
33
35 public function createLocally( $database ): Status {
36 $connStatus = $this->context->getConnection( ITaskContext::CONN_CREATE_DATABASE );
37 if ( !$connStatus->isOK() ) {
38 return $connStatus;
39 }
40 $conn = $connStatus->getDB();
41 return $this->createInConnection( $conn, $database );
42 }
43
45 public function createInLoadBalancer( ILoadBalancer $loadBalancer, $database ): Status {
46 $conn = $loadBalancer->getConnection( DB_PRIMARY, [], DatabaseDomain::newUnspecified()->getId() );
47 return $this->createInConnection( $conn, $database );
48 }
49
57 abstract protected function existsInConnection( IDatabase $conn, $database );
58
66 abstract protected function createInConnection( IDatabase $conn, $database ): Status;
67}
const DB_PRIMARY
Definition defines.php:28
Helper for creating databases.
Common code for MySQL and PostgreSQL, which are similar due to the fact that databases can be created...
createInLoadBalancer(ILoadBalancer $loadBalancer, $database)
Create a database in the specified LoadBalancer which may be for an external cluster....
existsLocally( $database)
Check if a database exists on the local cluster or context.bool
createInConnection(IDatabase $conn, $database)
Create a database on a connection.
existsInConnection(IDatabase $conn, $database)
Determine whether a database exists on a connection.
createLocally( $database)
Create a database in the local cluster or install context.Status
existsInLoadBalancer(ILoadBalancer $loadBalancer, $database)
Check if a database exists in the specified LoadBalancer which may be for an external cluster....
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Definition Status.php:44
Class to handle database/schema/prefix specifications for IDatabase.
Dependency bundle and execution context for installer tasks.
Interface to a relational database.
Definition IDatabase.php:31
This class is a delegate to ILBFactory for a given database cluster.
getConnection( $i, $groups=[], string|false $domain=false, $flags=0)
Get a lazy-connecting database handle for a specific or virtual (DB_PRIMARY/DB_REPLICA) server index.