Change database creation to use array to select db setup class

This commit is contained in:
Bart Visscher 2013-04-03 08:31:47 +02:00
parent e232907698
commit 2faccaee0d
2 changed files with 31 additions and 25 deletions

View File

@ -91,32 +91,18 @@ class OC_Setup {
OC_Config::setValue('datadirectory', $datadir);
OC_Config::setValue('dbtype', $dbtype);
OC_Config::setValue('version', implode('.', OC_Util::getVersion()));
$db_setup_classes = array(
'mysql' => '\OC\Setup\MySQL',
'pgsql' => '\OC\Setup\PostgreSQL',
'oci' => '\OC\Setup\OCI',
'mssql' => '\OC\Setup\MSSQL',
'sqlite' => '\OC\Setup\Sqlite',
'sqlite3' => '\OC\Setup\Sqlite',
);
try {
if ($dbtype == 'mysql') {
$db_setup = new \OC\Setup\MySQL(self::getTrans(), $options);
$db_setup->setupDatabase($username);
}
elseif($dbtype == 'pgsql') {
$db_setup = new \OC\Setup\PostgreSQL(self::getTrans(), $options);
$db_setup->setupDatabase($username);
}
elseif($dbtype == 'oci') {
$db_setup = new \OC\Setup\OCI(self::getTrans(), $options);
$db_setup->setupDatabase($username);
}
elseif ($dbtype == 'mssql') {
$db_setup = new \OC\Setup\MSSQL(self::getTrans(), $options);
$db_setup->setupDatabase($username);
}
else { // sqlite
//delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) {
unlink("$datadir/owncloud.db");
}
//in case of sqlite, we can always fill the database
error_log("creating sqlite db");
OC_DB::createDbFromStructure('db_structure.xml');
}
$class = $db_setup_classes[$dbtype];
$db_setup = new $class(self::getTrans(), $options);
$db_setup->setupDatabase($username);
} catch (DatabaseSetupException $e) {
$error[] = array(
'error' => $e->getMessage(),

20
lib/setup/sqlite.php Normal file
View File

@ -0,0 +1,20 @@
<?php
namespace OC\Setup;
class Sqlite extends AbstractDatabase {
public function initialize($config) {
}
public function setupDatabase($username) {
$datadir = \OC_Config::getValue('datadirectory');
//delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) {
unlink("$datadir/owncloud.db");
}
//in case of sqlite, we can always fill the database
error_log("creating sqlite db");
\OC_DB::createDbFromStructure('db_structure.xml');
}
}