phpvms/modules/Installer/Services/DatabaseService.php

63 lines
1.5 KiB
PHP
Raw Normal View History

<?php
namespace Modules\Installer\Services;
use Log;
use PDO;
class DatabaseService {
/**
* Check the PHP version that it meets the minimum requirement
* @throws \PDOException
* @return boolean
*/
2017-12-15 12:32:52 +08:00
public function checkDbConnection($driver, $host, $port, $name, $user, $pass)
{
2017-12-15 12:32:52 +08:00
Log::info('Testing Connection: '.$driver.'::'.$user.':'.$pass.'@'.$host.':'.$port.';'.$name);
2017-12-15 12:32:52 +08:00
if($driver === 'mysql') {
2017-12-15 11:34:11 +08:00
$dsn = "mysql:host=$host;port=$port;";
Log::info('Connection string: '. $dsn);
try {
$conn = new PDO($dsn, $user, $pass);
} catch (\PDOException $e) {
throw $e;
}
}
// Needs testing
2017-12-15 12:32:52 +08:00
elseif ($driver === 'postgres') {
$dsn = "pgsql:host=$host;port=$port;dbname=$name";
try {
$conn = new PDO($dsn, $user, $pass);
} catch (\PDOException $e) {
throw $e;
}
}
return true;
}
/**
* Setup the database by running the migration commands
*/
2017-12-15 12:32:52 +08:00
public function setupDB($db_driver='')
{
2017-12-15 12:22:33 +08:00
$output = '';
2017-12-15 12:32:52 +08:00
if($db_driver === 'sqlite') {
\Artisan::call('database:create');
$output .= \Artisan::output();
}
\Artisan::call('migrate');
2017-12-15 12:22:33 +08:00
$output .= trim(\Artisan::output());
\Artisan::call('db:seed');
2017-12-15 12:22:33 +08:00
$output .= trim(\Artisan::output());
2017-12-15 12:22:33 +08:00
return trim($output);
}
}