miniflux-legacy/app/core/database.php

62 lines
1.7 KiB
PHP
Raw Permalink Normal View History

2016-12-26 21:07:18 +01:00
<?php
namespace Miniflux\Database;
use Miniflux\Schema;
use RuntimeException;
use PicoDb;
function get_connection()
{
$db = new PicoDb\Database(get_connection_parameters());
2016-12-28 03:12:19 +01:00
if (DEBUG_MODE) {
2017-01-02 23:22:46 +01:00
$db->getStatementHandler()
->withLogging()
->withStopWatch();
2016-12-28 03:12:19 +01:00
}
2016-12-26 21:07:18 +01:00
if ($db->schema('\Miniflux\Schema')->check(Schema\VERSION)) {
return $db;
} else {
$errors = $db->getLogMessages();
$nb_errors = count($errors);
2017-01-02 23:22:46 +01:00
$last_error = isset($errors[$nb_errors - 1]) ? $errors[$nb_errors - 1] : 'Enable debug mode to have more information';
2016-12-26 21:07:18 +01:00
throw new RuntimeException('Unable to migrate the database schema: '.$last_error);
}
}
function get_connection_parameters()
{
if (DB_DRIVER === 'postgres') {
require_once __DIR__.'/../schemas/postgres.php';
$params = array(
'driver' => 'postgres',
'hostname' => DB_HOSTNAME,
'username' => DB_USERNAME,
'password' => DB_PASSWORD,
'database' => DB_NAME,
'port' => DB_PORT,
);
} elseif (DB_DRIVER === 'mysql') {
require_once __DIR__.'/../schemas/mysql.php';
$params = array(
'driver' => 'mysql',
'hostname' => DB_HOSTNAME,
'username' => DB_USERNAME,
'password' => DB_PASSWORD,
'database' => DB_NAME,
'port' => DB_PORT,
'charset' => 'utf8mb4',
);
2016-12-26 21:07:18 +01:00
} else {
require_once __DIR__.'/../schemas/sqlite.php';
$params = array(
'driver' => 'sqlite',
'filename' => DB_FILENAME,
);
}
return $params;
}