forked from flashii/eeprom
Added EEPROM database migrations.
This commit is contained in:
parent
1422ddb526
commit
d6800f9b6f
5 changed files with 62 additions and 8 deletions
|
@ -43,3 +43,5 @@ if(!is_dir(PRM_THUMBS))
|
||||||
|
|
||||||
$db = DbTools::create($cfg->getString('database:dsn', 'null:'));
|
$db = DbTools::create($cfg->getString('database:dsn', 'null:'));
|
||||||
$db->execute('SET SESSION time_zone = \'+00:00\', sql_mode = \'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\';');
|
$db->execute('SET SESSION time_zone = \'+00:00\', sql_mode = \'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\';');
|
||||||
|
|
||||||
|
$eeprom = new EEPROMContext($cfg, $db);
|
||||||
|
|
30
src/DatabaseContext.php
Normal file
30
src/DatabaseContext.php
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
namespace EEPROM;
|
||||||
|
|
||||||
|
use Index\Data\IDbConnection;
|
||||||
|
use Index\Data\Migration\IDbMigrationRepo;
|
||||||
|
use Index\Data\Migration\DbMigrationManager;
|
||||||
|
use Index\Data\Migration\FsDbMigrationRepo;
|
||||||
|
|
||||||
|
class DatabaseContext {
|
||||||
|
public function __construct(
|
||||||
|
private IDbConnection $connection
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public function getConnection(): IDbConnection {
|
||||||
|
return $this->connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getQueryCount(): int {
|
||||||
|
$result = $this->connection->query('SHOW SESSION STATUS LIKE "Questions"');
|
||||||
|
return $result->next() ? $result->getInteger(1) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createMigrationManager(): DbMigrationManager {
|
||||||
|
return new DbMigrationManager($this->connection, 'prm_' . DbMigrationManager::DEFAULT_TABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createMigrationRepo(): IDbMigrationRepo {
|
||||||
|
return new FsDbMigrationRepo(PRM_MIGRATIONS);
|
||||||
|
}
|
||||||
|
}
|
23
src/EEPROMContext.php
Normal file
23
src/EEPROMContext.php
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
namespace EEPROM;
|
||||||
|
|
||||||
|
use Index\Data\IDbConnection;
|
||||||
|
use Syokuhou\IConfig;
|
||||||
|
|
||||||
|
class EEPROMContext {
|
||||||
|
private IConfig $config;
|
||||||
|
private DatabaseContext $dbCtx;
|
||||||
|
|
||||||
|
public function __construct(IConfig $config, IDbConnection $dbConn) {
|
||||||
|
$this->config = $config;
|
||||||
|
$this->dbCtx = new DatabaseContext($dbConn);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getConfig(): IConfig {
|
||||||
|
return $this->config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDatabase(): DatabaseContext {
|
||||||
|
return $this->dbCtx;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,22 +1,21 @@
|
||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
use Index\Data\Migration\DbMigrationManager;
|
|
||||||
use Index\Data\Migration\FsDbMigrationRepo;
|
|
||||||
|
|
||||||
require_once __DIR__ . '/../eeprom.php';
|
require_once __DIR__ . '/../eeprom.php';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
touch(PRM_ROOT . '/.migrating');
|
touch(PRM_ROOT . '/.migrating');
|
||||||
chmod(PRM_ROOT . '/.migrating', 0777);
|
chmod(PRM_ROOT . '/.migrating', 0777);
|
||||||
|
|
||||||
|
$db = $eeprom->getDatabase();
|
||||||
|
|
||||||
echo 'Creating migration manager...' . PHP_EOL;
|
echo 'Creating migration manager...' . PHP_EOL;
|
||||||
$manager = new DbMigrationManager($db, 'prm_' . DbMigrationManager::DEFAULT_TABLE);
|
$manager = $db->createMigrationManager();
|
||||||
|
|
||||||
echo 'Preparing to run migrations...' . PHP_EOL;
|
echo 'Preparing to run migrations...' . PHP_EOL;
|
||||||
$manager->init();
|
$manager->init();
|
||||||
|
|
||||||
echo 'Creating migration repository...' . PHP_EOL;
|
echo 'Creating migration repository...' . PHP_EOL;
|
||||||
$repo = new FsDbMigrationRepo(PRM_MIGRATIONS);
|
$repo = $db->createMigrationRepo();
|
||||||
|
|
||||||
echo 'Running migrations...' . PHP_EOL;
|
echo 'Running migrations...' . PHP_EOL;
|
||||||
$completed = $manager->processMigrations($repo);
|
$completed = $manager->processMigrations($repo);
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
use Index\Data\Migration\DbMigrationManager;
|
|
||||||
use Index\Data\Migration\FsDbMigrationRepo;
|
use Index\Data\Migration\FsDbMigrationRepo;
|
||||||
|
|
||||||
require_once __DIR__ . '/../eeprom.php';
|
require_once __DIR__ . '/../eeprom.php';
|
||||||
|
|
||||||
$repo = new FsDbMigrationRepo(PRM_MIGRATIONS);
|
$db = $eeprom->getDatabase();
|
||||||
|
$repo = $db->createMigrationRepo();
|
||||||
if(!($repo instanceof FsDbMigrationRepo)) {
|
if(!($repo instanceof FsDbMigrationRepo)) {
|
||||||
echo 'Migration repository type does not support creation of templates.' . PHP_EOL;
|
echo 'Migration repository type does not support creation of templates.' . PHP_EOL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$baseName = implode(' ', array_slice($argv, 1));
|
$baseName = implode(' ', array_slice($argv, 1));
|
||||||
$manager = new DbMigrationManager($db, 'prm_' . DbMigrationManager::DEFAULT_TABLE);
|
$manager = $db->createMigrationManager();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$names = $manager->createNames($baseName);
|
$names = $manager->createNames($baseName);
|
||||||
|
|
Loading…
Reference in a new issue