diff --git a/classes/config.php b/classes/config.php index 7a37d4a86ad2f7cb53216be2f74a4653b476651f..30b65305ab2bacf3d26214c183b5d0bf228f0ae2 100644 --- a/classes/config.php +++ b/classes/config.php @@ -114,6 +114,9 @@ class Config { private $schema_version = null; private $version = []; + /** @var Db_Migrations $migrations */ + private $migrations; + public static function get_instance() : Config { if (self::$instance == null) self::$instance = new self(); @@ -218,18 +221,25 @@ class Config { return $rv; } - static function get_schema_version(bool $nocache = false) { - return self::get_instance()->_schema_version($nocache); + static function get_migrations() : Db_Migrations { + return self::get_instance()->_get_migrations(); } - function _schema_version(bool $nocache = false) { - if (empty($this->schema_version) || $nocache) { - $row = Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch(); - - $this->schema_version = (int) $row["schema_version"]; + private function _get_migrations() : Db_Migrations { + if (empty($this->migrations)) { + $this->migrations = new Db_Migrations(); + $this->migrations->initialize(dirname(__DIR__) . "/sql", "ttrss_version", true); } - return $this->schema_version; + return $this->migrations; + } + + static function is_migration_needed() : bool { + return self::get_migrations()->is_migration_needed(); + } + + static function get_schema_version() : int { + return self::get_migrations()->get_version(); } static function cast_to(string $value, int $type_hint) { diff --git a/classes/db/migrations.php b/classes/db/migrations.php index f85b4d7c76de1d686cc2ea00fea6994238797a3d..e77904f60323369298e3d3a98c0a243bfac2a0d1 100644 --- a/classes/db/migrations.php +++ b/classes/db/migrations.php @@ -10,6 +10,7 @@ class Db_Migrations { private $cached_version; private $cached_max_version; + private $max_version_override; function __construct() { $this->pdo = Db::pdo(); @@ -22,14 +23,17 @@ class Db_Migrations { $base_is_latest); } - function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true) { + function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true, int $max_version_override = 0) { $this->base_path = "$root_path/" . Config::get(Config::DB_TYPE); $this->migrations_path = $this->base_path . "/migrations"; $this->migrations_table = $migrations_table; $this->base_is_latest = $base_is_latest; + $this->max_version_override = $max_version_override; } private function set_version(int $version) { + Debug::log("Updating table {$this->migrations_table} with version ${version}...", Debug::LOG_EXTENDED); + $sth = $this->pdo->query("SELECT * FROM {$this->migrations_table}"); if ($res = $sth->fetch()) { @@ -43,7 +47,7 @@ class Db_Migrations { $this->cached_version = $version; } - private function get_version() : int { + function get_version() : int { if (isset($this->cached_version)) return $this->cached_version; @@ -68,10 +72,26 @@ class Db_Migrations { private function migrate_to(int $version) { try { + if ($version <= $this->get_version()) { + Debug::log("Refusing to apply version $version: current version is higher", Debug::LOG_VERBOSE); + return false; + } + + if ($version == 0) + Debug::log("Loading base database schema...", Debug::LOG_VERBOSE); + else + Debug::log("Starting migration to $version...", Debug::LOG_VERBOSE); + $this->pdo->beginTransaction(); foreach ($this->get_lines($version) as $line) { - $this->pdo->query($line); + Debug::log($line, Debug::LOG_EXTENDED); + try { + $this->pdo->query($line); + } catch (PDOException $e) { + Debug::log("Failed on line: $line"); + throw $e; + } } if ($version == 0 && $this->base_is_latest) @@ -80,7 +100,10 @@ class Db_Migrations { $this->set_version($version); $this->pdo->commit(); + Debug::log("Migration finished, current version: " . $this->get_version(), Debug::LOG_VERBOSE); + } catch (PDOException $e) { + Debug::log("Migration failed: " . $e->getMessage(), Debug::LOG_VERBOSE); try { $this->pdo->rollback(); } catch (PDOException $ie) { @@ -90,7 +113,10 @@ class Db_Migrations { } } - private function get_max_version() : int { + function get_max_version() : int { + if ($this->max_version_override > 0) + return $this->max_version_override; + if (isset($this->cached_max_version)) return $this->cached_max_version; @@ -108,17 +134,32 @@ class Db_Migrations { return $this->cached_max_version; } + function is_migration_needed() : bool { + return $this->get_version() != $this->get_max_version(); + } + function migrate() : bool { - for ($i = $this->get_version() + 1; $i <= $this->get_max_version(); $i++) + if ($this->get_version() == -1) { + try { + $this->migrate_to(0); + } catch (PDOException $e) { + user_error("Failed to load base schema for {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + return false; + } + } + + for ($i = $this->get_version() + 1; $i <= $this->get_max_version(); $i++) { try { $this->migrate_to($i); } catch (PDOException $e) { - user_error("Failed applying migration $i on table {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + user_error("Failed to apply migration ${i} for {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + return false; //throw $e; } + } - return $this->get_version() == $this->get_max_version(); + return !$this->is_migration_needed(); } private function get_lines(int $version) : array { @@ -134,11 +175,11 @@ class Db_Migrations { }); return array_filter(explode(";", implode("", $lines)), function ($line) { - return strlen(trim($line)) > 0; + return strlen(trim($line)) > 0 && !in_array(strtolower($line), ["begin", "commit"]); }); } else { - user_error(E_USER_ERROR, "[migrations] requested schema file ${filename} not found."); + user_error("Requested schema file ${filename} not found.", E_USER_ERROR); return []; } } diff --git a/classes/debug.php b/classes/debug.php index 3061c6893b18344adffc4f3854218465abf8e75d..a0dcac35b5c916d8105e73320e6b61d1edc3d410 100644 --- a/classes/debug.php +++ b/classes/debug.php @@ -1,5 +1,10 @@ <?php class Debug { + const LOG_DISABLED = -1; + const LOG_NORMAL = 0; + const LOG_VERBOSE = 1; + const LOG_EXTENDED = 2; + public static $LOG_DISABLED = -1; public static $LOG_NORMAL = 0; public static $LOG_VERBOSE = 1; diff --git a/schema/versions/mysql/10.sql b/sql/mysql/migrations/10.sql similarity index 100% rename from schema/versions/mysql/10.sql rename to sql/mysql/migrations/10.sql diff --git a/schema/versions/mysql/100.sql b/sql/mysql/migrations/100.sql similarity index 100% rename from schema/versions/mysql/100.sql rename to sql/mysql/migrations/100.sql diff --git a/schema/versions/mysql/101.sql b/sql/mysql/migrations/101.sql similarity index 100% rename from schema/versions/mysql/101.sql rename to sql/mysql/migrations/101.sql diff --git a/schema/versions/mysql/102.sql b/sql/mysql/migrations/102.sql similarity index 100% rename from schema/versions/mysql/102.sql rename to sql/mysql/migrations/102.sql diff --git a/schema/versions/mysql/103.sql b/sql/mysql/migrations/103.sql similarity index 100% rename from schema/versions/mysql/103.sql rename to sql/mysql/migrations/103.sql diff --git a/schema/versions/mysql/104.sql b/sql/mysql/migrations/104.sql similarity index 100% rename from schema/versions/mysql/104.sql rename to sql/mysql/migrations/104.sql diff --git a/schema/versions/mysql/105.sql b/sql/mysql/migrations/105.sql similarity index 100% rename from schema/versions/mysql/105.sql rename to sql/mysql/migrations/105.sql diff --git a/schema/versions/mysql/106.sql b/sql/mysql/migrations/106.sql similarity index 100% rename from schema/versions/mysql/106.sql rename to sql/mysql/migrations/106.sql diff --git a/schema/versions/mysql/107.sql b/sql/mysql/migrations/107.sql similarity index 100% rename from schema/versions/mysql/107.sql rename to sql/mysql/migrations/107.sql diff --git a/schema/versions/mysql/108.sql b/sql/mysql/migrations/108.sql similarity index 100% rename from schema/versions/mysql/108.sql rename to sql/mysql/migrations/108.sql diff --git a/schema/versions/mysql/109.sql b/sql/mysql/migrations/109.sql similarity index 100% rename from schema/versions/mysql/109.sql rename to sql/mysql/migrations/109.sql diff --git a/schema/versions/mysql/11.sql b/sql/mysql/migrations/11.sql similarity index 100% rename from schema/versions/mysql/11.sql rename to sql/mysql/migrations/11.sql diff --git a/schema/versions/mysql/110.sql b/sql/mysql/migrations/110.sql similarity index 100% rename from schema/versions/mysql/110.sql rename to sql/mysql/migrations/110.sql diff --git a/schema/versions/mysql/111.sql b/sql/mysql/migrations/111.sql similarity index 100% rename from schema/versions/mysql/111.sql rename to sql/mysql/migrations/111.sql diff --git a/schema/versions/mysql/112.sql b/sql/mysql/migrations/112.sql similarity index 100% rename from schema/versions/mysql/112.sql rename to sql/mysql/migrations/112.sql diff --git a/schema/versions/mysql/113.sql b/sql/mysql/migrations/113.sql similarity index 100% rename from schema/versions/mysql/113.sql rename to sql/mysql/migrations/113.sql diff --git a/schema/versions/mysql/114.sql b/sql/mysql/migrations/114.sql similarity index 100% rename from schema/versions/mysql/114.sql rename to sql/mysql/migrations/114.sql diff --git a/schema/versions/mysql/115.sql b/sql/mysql/migrations/115.sql similarity index 100% rename from schema/versions/mysql/115.sql rename to sql/mysql/migrations/115.sql diff --git a/schema/versions/mysql/116.sql b/sql/mysql/migrations/116.sql similarity index 100% rename from schema/versions/mysql/116.sql rename to sql/mysql/migrations/116.sql diff --git a/schema/versions/mysql/117.sql b/sql/mysql/migrations/117.sql similarity index 100% rename from schema/versions/mysql/117.sql rename to sql/mysql/migrations/117.sql diff --git a/schema/versions/mysql/118.sql b/sql/mysql/migrations/118.sql similarity index 100% rename from schema/versions/mysql/118.sql rename to sql/mysql/migrations/118.sql diff --git a/schema/versions/mysql/119.sql b/sql/mysql/migrations/119.sql similarity index 100% rename from schema/versions/mysql/119.sql rename to sql/mysql/migrations/119.sql diff --git a/schema/versions/mysql/12.sql b/sql/mysql/migrations/12.sql similarity index 100% rename from schema/versions/mysql/12.sql rename to sql/mysql/migrations/12.sql diff --git a/schema/versions/mysql/120.sql b/sql/mysql/migrations/120.sql similarity index 100% rename from schema/versions/mysql/120.sql rename to sql/mysql/migrations/120.sql diff --git a/schema/versions/mysql/121.sql b/sql/mysql/migrations/121.sql similarity index 100% rename from schema/versions/mysql/121.sql rename to sql/mysql/migrations/121.sql diff --git a/schema/versions/mysql/122.sql b/sql/mysql/migrations/122.sql similarity index 100% rename from schema/versions/mysql/122.sql rename to sql/mysql/migrations/122.sql diff --git a/schema/versions/mysql/123.sql b/sql/mysql/migrations/123.sql similarity index 100% rename from schema/versions/mysql/123.sql rename to sql/mysql/migrations/123.sql diff --git a/schema/versions/mysql/124.sql b/sql/mysql/migrations/124.sql similarity index 100% rename from schema/versions/mysql/124.sql rename to sql/mysql/migrations/124.sql diff --git a/schema/versions/mysql/125.sql b/sql/mysql/migrations/125.sql similarity index 100% rename from schema/versions/mysql/125.sql rename to sql/mysql/migrations/125.sql diff --git a/schema/versions/mysql/126.sql b/sql/mysql/migrations/126.sql similarity index 100% rename from schema/versions/mysql/126.sql rename to sql/mysql/migrations/126.sql diff --git a/schema/versions/mysql/127.sql b/sql/mysql/migrations/127.sql similarity index 100% rename from schema/versions/mysql/127.sql rename to sql/mysql/migrations/127.sql diff --git a/schema/versions/mysql/128.sql b/sql/mysql/migrations/128.sql similarity index 100% rename from schema/versions/mysql/128.sql rename to sql/mysql/migrations/128.sql diff --git a/schema/versions/mysql/129.sql b/sql/mysql/migrations/129.sql similarity index 100% rename from schema/versions/mysql/129.sql rename to sql/mysql/migrations/129.sql diff --git a/schema/versions/mysql/13.sql b/sql/mysql/migrations/13.sql similarity index 100% rename from schema/versions/mysql/13.sql rename to sql/mysql/migrations/13.sql diff --git a/schema/versions/mysql/130.sql b/sql/mysql/migrations/130.sql similarity index 100% rename from schema/versions/mysql/130.sql rename to sql/mysql/migrations/130.sql diff --git a/schema/versions/mysql/131.sql b/sql/mysql/migrations/131.sql similarity index 100% rename from schema/versions/mysql/131.sql rename to sql/mysql/migrations/131.sql diff --git a/schema/versions/mysql/132.sql b/sql/mysql/migrations/132.sql similarity index 100% rename from schema/versions/mysql/132.sql rename to sql/mysql/migrations/132.sql diff --git a/schema/versions/mysql/133.sql b/sql/mysql/migrations/133.sql similarity index 100% rename from schema/versions/mysql/133.sql rename to sql/mysql/migrations/133.sql diff --git a/schema/versions/mysql/134.sql b/sql/mysql/migrations/134.sql similarity index 100% rename from schema/versions/mysql/134.sql rename to sql/mysql/migrations/134.sql diff --git a/schema/versions/mysql/135.sql b/sql/mysql/migrations/135.sql similarity index 100% rename from schema/versions/mysql/135.sql rename to sql/mysql/migrations/135.sql diff --git a/schema/versions/mysql/136.sql b/sql/mysql/migrations/136.sql similarity index 100% rename from schema/versions/mysql/136.sql rename to sql/mysql/migrations/136.sql diff --git a/schema/versions/mysql/137.sql b/sql/mysql/migrations/137.sql similarity index 100% rename from schema/versions/mysql/137.sql rename to sql/mysql/migrations/137.sql diff --git a/schema/versions/mysql/138.sql b/sql/mysql/migrations/138.sql similarity index 100% rename from schema/versions/mysql/138.sql rename to sql/mysql/migrations/138.sql diff --git a/schema/versions/mysql/139.sql b/sql/mysql/migrations/139.sql similarity index 100% rename from schema/versions/mysql/139.sql rename to sql/mysql/migrations/139.sql diff --git a/schema/versions/mysql/14.sql b/sql/mysql/migrations/14.sql similarity index 100% rename from schema/versions/mysql/14.sql rename to sql/mysql/migrations/14.sql diff --git a/schema/versions/mysql/140.sql b/sql/mysql/migrations/140.sql similarity index 100% rename from schema/versions/mysql/140.sql rename to sql/mysql/migrations/140.sql diff --git a/schema/versions/mysql/141.sql b/sql/mysql/migrations/141.sql similarity index 100% rename from schema/versions/mysql/141.sql rename to sql/mysql/migrations/141.sql diff --git a/schema/versions/mysql/142.sql b/sql/mysql/migrations/142.sql similarity index 100% rename from schema/versions/mysql/142.sql rename to sql/mysql/migrations/142.sql diff --git a/schema/versions/mysql/15.sql b/sql/mysql/migrations/15.sql similarity index 100% rename from schema/versions/mysql/15.sql rename to sql/mysql/migrations/15.sql diff --git a/schema/versions/mysql/16.sql b/sql/mysql/migrations/16.sql similarity index 100% rename from schema/versions/mysql/16.sql rename to sql/mysql/migrations/16.sql diff --git a/schema/versions/mysql/17.sql b/sql/mysql/migrations/17.sql similarity index 100% rename from schema/versions/mysql/17.sql rename to sql/mysql/migrations/17.sql diff --git a/schema/versions/mysql/18.sql b/sql/mysql/migrations/18.sql similarity index 100% rename from schema/versions/mysql/18.sql rename to sql/mysql/migrations/18.sql diff --git a/schema/versions/mysql/19.sql b/sql/mysql/migrations/19.sql similarity index 100% rename from schema/versions/mysql/19.sql rename to sql/mysql/migrations/19.sql diff --git a/schema/versions/mysql/20.sql b/sql/mysql/migrations/20.sql similarity index 100% rename from schema/versions/mysql/20.sql rename to sql/mysql/migrations/20.sql diff --git a/schema/versions/mysql/21.sql b/sql/mysql/migrations/21.sql similarity index 100% rename from schema/versions/mysql/21.sql rename to sql/mysql/migrations/21.sql diff --git a/schema/versions/mysql/22.sql b/sql/mysql/migrations/22.sql similarity index 100% rename from schema/versions/mysql/22.sql rename to sql/mysql/migrations/22.sql diff --git a/schema/versions/mysql/23.sql b/sql/mysql/migrations/23.sql similarity index 100% rename from schema/versions/mysql/23.sql rename to sql/mysql/migrations/23.sql diff --git a/schema/versions/mysql/24.sql b/sql/mysql/migrations/24.sql similarity index 100% rename from schema/versions/mysql/24.sql rename to sql/mysql/migrations/24.sql diff --git a/schema/versions/mysql/25.sql b/sql/mysql/migrations/25.sql similarity index 100% rename from schema/versions/mysql/25.sql rename to sql/mysql/migrations/25.sql diff --git a/schema/versions/mysql/26.sql b/sql/mysql/migrations/26.sql similarity index 100% rename from schema/versions/mysql/26.sql rename to sql/mysql/migrations/26.sql diff --git a/schema/versions/mysql/27.sql b/sql/mysql/migrations/27.sql similarity index 100% rename from schema/versions/mysql/27.sql rename to sql/mysql/migrations/27.sql diff --git a/schema/versions/mysql/28.sql b/sql/mysql/migrations/28.sql similarity index 100% rename from schema/versions/mysql/28.sql rename to sql/mysql/migrations/28.sql diff --git a/schema/versions/mysql/29.sql b/sql/mysql/migrations/29.sql similarity index 100% rename from schema/versions/mysql/29.sql rename to sql/mysql/migrations/29.sql diff --git a/schema/versions/mysql/3.sql b/sql/mysql/migrations/3.sql similarity index 100% rename from schema/versions/mysql/3.sql rename to sql/mysql/migrations/3.sql diff --git a/schema/versions/mysql/30.sql b/sql/mysql/migrations/30.sql similarity index 100% rename from schema/versions/mysql/30.sql rename to sql/mysql/migrations/30.sql diff --git a/schema/versions/mysql/31.sql b/sql/mysql/migrations/31.sql similarity index 100% rename from schema/versions/mysql/31.sql rename to sql/mysql/migrations/31.sql diff --git a/schema/versions/mysql/32.sql b/sql/mysql/migrations/32.sql similarity index 100% rename from schema/versions/mysql/32.sql rename to sql/mysql/migrations/32.sql diff --git a/schema/versions/mysql/33.sql b/sql/mysql/migrations/33.sql similarity index 100% rename from schema/versions/mysql/33.sql rename to sql/mysql/migrations/33.sql diff --git a/schema/versions/mysql/34.sql b/sql/mysql/migrations/34.sql similarity index 100% rename from schema/versions/mysql/34.sql rename to sql/mysql/migrations/34.sql diff --git a/schema/versions/mysql/35.sql b/sql/mysql/migrations/35.sql similarity index 100% rename from schema/versions/mysql/35.sql rename to sql/mysql/migrations/35.sql diff --git a/schema/versions/mysql/36.sql b/sql/mysql/migrations/36.sql similarity index 100% rename from schema/versions/mysql/36.sql rename to sql/mysql/migrations/36.sql diff --git a/schema/versions/mysql/37.sql b/sql/mysql/migrations/37.sql similarity index 100% rename from schema/versions/mysql/37.sql rename to sql/mysql/migrations/37.sql diff --git a/schema/versions/mysql/38.sql b/sql/mysql/migrations/38.sql similarity index 100% rename from schema/versions/mysql/38.sql rename to sql/mysql/migrations/38.sql diff --git a/schema/versions/mysql/39.sql b/sql/mysql/migrations/39.sql similarity index 100% rename from schema/versions/mysql/39.sql rename to sql/mysql/migrations/39.sql diff --git a/schema/versions/mysql/4.sql b/sql/mysql/migrations/4.sql similarity index 100% rename from schema/versions/mysql/4.sql rename to sql/mysql/migrations/4.sql diff --git a/schema/versions/mysql/40.sql b/sql/mysql/migrations/40.sql similarity index 100% rename from schema/versions/mysql/40.sql rename to sql/mysql/migrations/40.sql diff --git a/schema/versions/mysql/41.sql b/sql/mysql/migrations/41.sql similarity index 100% rename from schema/versions/mysql/41.sql rename to sql/mysql/migrations/41.sql diff --git a/schema/versions/mysql/42.sql b/sql/mysql/migrations/42.sql similarity index 100% rename from schema/versions/mysql/42.sql rename to sql/mysql/migrations/42.sql diff --git a/schema/versions/mysql/43.sql b/sql/mysql/migrations/43.sql similarity index 100% rename from schema/versions/mysql/43.sql rename to sql/mysql/migrations/43.sql diff --git a/schema/versions/mysql/44.sql b/sql/mysql/migrations/44.sql similarity index 100% rename from schema/versions/mysql/44.sql rename to sql/mysql/migrations/44.sql diff --git a/schema/versions/mysql/45.sql b/sql/mysql/migrations/45.sql similarity index 100% rename from schema/versions/mysql/45.sql rename to sql/mysql/migrations/45.sql diff --git a/schema/versions/mysql/46.sql b/sql/mysql/migrations/46.sql similarity index 100% rename from schema/versions/mysql/46.sql rename to sql/mysql/migrations/46.sql diff --git a/schema/versions/mysql/47.sql b/sql/mysql/migrations/47.sql similarity index 100% rename from schema/versions/mysql/47.sql rename to sql/mysql/migrations/47.sql diff --git a/schema/versions/mysql/48.sql b/sql/mysql/migrations/48.sql similarity index 100% rename from schema/versions/mysql/48.sql rename to sql/mysql/migrations/48.sql diff --git a/schema/versions/mysql/49.sql b/sql/mysql/migrations/49.sql similarity index 100% rename from schema/versions/mysql/49.sql rename to sql/mysql/migrations/49.sql diff --git a/schema/versions/mysql/5.sql b/sql/mysql/migrations/5.sql similarity index 100% rename from schema/versions/mysql/5.sql rename to sql/mysql/migrations/5.sql diff --git a/schema/versions/mysql/50.sql b/sql/mysql/migrations/50.sql similarity index 100% rename from schema/versions/mysql/50.sql rename to sql/mysql/migrations/50.sql diff --git a/schema/versions/mysql/51.sql b/sql/mysql/migrations/51.sql similarity index 100% rename from schema/versions/mysql/51.sql rename to sql/mysql/migrations/51.sql diff --git a/schema/versions/mysql/52.sql b/sql/mysql/migrations/52.sql similarity index 100% rename from schema/versions/mysql/52.sql rename to sql/mysql/migrations/52.sql diff --git a/schema/versions/mysql/53.sql b/sql/mysql/migrations/53.sql similarity index 100% rename from schema/versions/mysql/53.sql rename to sql/mysql/migrations/53.sql diff --git a/schema/versions/mysql/54.sql b/sql/mysql/migrations/54.sql similarity index 100% rename from schema/versions/mysql/54.sql rename to sql/mysql/migrations/54.sql diff --git a/schema/versions/mysql/55.sql b/sql/mysql/migrations/55.sql similarity index 100% rename from schema/versions/mysql/55.sql rename to sql/mysql/migrations/55.sql diff --git a/schema/versions/mysql/56.sql b/sql/mysql/migrations/56.sql similarity index 100% rename from schema/versions/mysql/56.sql rename to sql/mysql/migrations/56.sql diff --git a/schema/versions/mysql/57.sql b/sql/mysql/migrations/57.sql similarity index 100% rename from schema/versions/mysql/57.sql rename to sql/mysql/migrations/57.sql diff --git a/schema/versions/mysql/58.sql b/sql/mysql/migrations/58.sql similarity index 100% rename from schema/versions/mysql/58.sql rename to sql/mysql/migrations/58.sql diff --git a/schema/versions/mysql/59.sql b/sql/mysql/migrations/59.sql similarity index 100% rename from schema/versions/mysql/59.sql rename to sql/mysql/migrations/59.sql diff --git a/schema/versions/mysql/6.sql b/sql/mysql/migrations/6.sql similarity index 100% rename from schema/versions/mysql/6.sql rename to sql/mysql/migrations/6.sql diff --git a/schema/versions/mysql/60.sql b/sql/mysql/migrations/60.sql similarity index 100% rename from schema/versions/mysql/60.sql rename to sql/mysql/migrations/60.sql diff --git a/schema/versions/mysql/61.sql b/sql/mysql/migrations/61.sql similarity index 100% rename from schema/versions/mysql/61.sql rename to sql/mysql/migrations/61.sql diff --git a/schema/versions/mysql/62.sql b/sql/mysql/migrations/62.sql similarity index 100% rename from schema/versions/mysql/62.sql rename to sql/mysql/migrations/62.sql diff --git a/schema/versions/mysql/63.sql b/sql/mysql/migrations/63.sql similarity index 100% rename from schema/versions/mysql/63.sql rename to sql/mysql/migrations/63.sql diff --git a/schema/versions/mysql/64.sql b/sql/mysql/migrations/64.sql similarity index 100% rename from schema/versions/mysql/64.sql rename to sql/mysql/migrations/64.sql diff --git a/schema/versions/mysql/65.sql b/sql/mysql/migrations/65.sql similarity index 100% rename from schema/versions/mysql/65.sql rename to sql/mysql/migrations/65.sql diff --git a/schema/versions/mysql/66.sql b/sql/mysql/migrations/66.sql similarity index 100% rename from schema/versions/mysql/66.sql rename to sql/mysql/migrations/66.sql diff --git a/schema/versions/mysql/67.sql b/sql/mysql/migrations/67.sql similarity index 100% rename from schema/versions/mysql/67.sql rename to sql/mysql/migrations/67.sql diff --git a/schema/versions/mysql/68.sql b/sql/mysql/migrations/68.sql similarity index 100% rename from schema/versions/mysql/68.sql rename to sql/mysql/migrations/68.sql diff --git a/schema/versions/mysql/69.sql b/sql/mysql/migrations/69.sql similarity index 100% rename from schema/versions/mysql/69.sql rename to sql/mysql/migrations/69.sql diff --git a/schema/versions/mysql/7.sql b/sql/mysql/migrations/7.sql similarity index 100% rename from schema/versions/mysql/7.sql rename to sql/mysql/migrations/7.sql diff --git a/schema/versions/mysql/70.sql b/sql/mysql/migrations/70.sql similarity index 100% rename from schema/versions/mysql/70.sql rename to sql/mysql/migrations/70.sql diff --git a/schema/versions/mysql/71.sql b/sql/mysql/migrations/71.sql similarity index 100% rename from schema/versions/mysql/71.sql rename to sql/mysql/migrations/71.sql diff --git a/schema/versions/mysql/72.sql b/sql/mysql/migrations/72.sql similarity index 100% rename from schema/versions/mysql/72.sql rename to sql/mysql/migrations/72.sql diff --git a/schema/versions/mysql/73.sql b/sql/mysql/migrations/73.sql similarity index 100% rename from schema/versions/mysql/73.sql rename to sql/mysql/migrations/73.sql diff --git a/schema/versions/mysql/74.sql b/sql/mysql/migrations/74.sql similarity index 100% rename from schema/versions/mysql/74.sql rename to sql/mysql/migrations/74.sql diff --git a/schema/versions/mysql/75.sql b/sql/mysql/migrations/75.sql similarity index 100% rename from schema/versions/mysql/75.sql rename to sql/mysql/migrations/75.sql diff --git a/schema/versions/mysql/76.sql b/sql/mysql/migrations/76.sql similarity index 100% rename from schema/versions/mysql/76.sql rename to sql/mysql/migrations/76.sql diff --git a/schema/versions/mysql/77.sql b/sql/mysql/migrations/77.sql similarity index 100% rename from schema/versions/mysql/77.sql rename to sql/mysql/migrations/77.sql diff --git a/schema/versions/mysql/78.sql b/sql/mysql/migrations/78.sql similarity index 100% rename from schema/versions/mysql/78.sql rename to sql/mysql/migrations/78.sql diff --git a/schema/versions/mysql/79.sql b/sql/mysql/migrations/79.sql similarity index 100% rename from schema/versions/mysql/79.sql rename to sql/mysql/migrations/79.sql diff --git a/schema/versions/mysql/8.sql b/sql/mysql/migrations/8.sql similarity index 100% rename from schema/versions/mysql/8.sql rename to sql/mysql/migrations/8.sql diff --git a/schema/versions/mysql/80.sql b/sql/mysql/migrations/80.sql similarity index 100% rename from schema/versions/mysql/80.sql rename to sql/mysql/migrations/80.sql diff --git a/schema/versions/mysql/81.sql b/sql/mysql/migrations/81.sql similarity index 100% rename from schema/versions/mysql/81.sql rename to sql/mysql/migrations/81.sql diff --git a/schema/versions/mysql/82.sql b/sql/mysql/migrations/82.sql similarity index 100% rename from schema/versions/mysql/82.sql rename to sql/mysql/migrations/82.sql diff --git a/schema/versions/mysql/83.sql b/sql/mysql/migrations/83.sql similarity index 100% rename from schema/versions/mysql/83.sql rename to sql/mysql/migrations/83.sql diff --git a/schema/versions/mysql/84.sql b/sql/mysql/migrations/84.sql similarity index 100% rename from schema/versions/mysql/84.sql rename to sql/mysql/migrations/84.sql diff --git a/schema/versions/mysql/85.sql b/sql/mysql/migrations/85.sql similarity index 100% rename from schema/versions/mysql/85.sql rename to sql/mysql/migrations/85.sql diff --git a/schema/versions/mysql/86.sql b/sql/mysql/migrations/86.sql similarity index 100% rename from schema/versions/mysql/86.sql rename to sql/mysql/migrations/86.sql diff --git a/schema/versions/mysql/87.sql b/sql/mysql/migrations/87.sql similarity index 100% rename from schema/versions/mysql/87.sql rename to sql/mysql/migrations/87.sql diff --git a/schema/versions/mysql/88.sql b/sql/mysql/migrations/88.sql similarity index 100% rename from schema/versions/mysql/88.sql rename to sql/mysql/migrations/88.sql diff --git a/schema/versions/mysql/89.sql b/sql/mysql/migrations/89.sql similarity index 100% rename from schema/versions/mysql/89.sql rename to sql/mysql/migrations/89.sql diff --git a/schema/versions/mysql/9.sql b/sql/mysql/migrations/9.sql similarity index 100% rename from schema/versions/mysql/9.sql rename to sql/mysql/migrations/9.sql diff --git a/schema/versions/mysql/90.sql b/sql/mysql/migrations/90.sql similarity index 100% rename from schema/versions/mysql/90.sql rename to sql/mysql/migrations/90.sql diff --git a/schema/versions/mysql/91.sql b/sql/mysql/migrations/91.sql similarity index 100% rename from schema/versions/mysql/91.sql rename to sql/mysql/migrations/91.sql diff --git a/schema/versions/mysql/92.sql b/sql/mysql/migrations/92.sql similarity index 100% rename from schema/versions/mysql/92.sql rename to sql/mysql/migrations/92.sql diff --git a/schema/versions/mysql/93.sql b/sql/mysql/migrations/93.sql similarity index 100% rename from schema/versions/mysql/93.sql rename to sql/mysql/migrations/93.sql diff --git a/schema/versions/mysql/94.sql b/sql/mysql/migrations/94.sql similarity index 100% rename from schema/versions/mysql/94.sql rename to sql/mysql/migrations/94.sql diff --git a/schema/versions/mysql/95.sql b/sql/mysql/migrations/95.sql similarity index 100% rename from schema/versions/mysql/95.sql rename to sql/mysql/migrations/95.sql diff --git a/schema/versions/mysql/96.sql b/sql/mysql/migrations/96.sql similarity index 100% rename from schema/versions/mysql/96.sql rename to sql/mysql/migrations/96.sql diff --git a/schema/versions/mysql/97.sql b/sql/mysql/migrations/97.sql similarity index 100% rename from schema/versions/mysql/97.sql rename to sql/mysql/migrations/97.sql diff --git a/schema/versions/mysql/98.sql b/sql/mysql/migrations/98.sql similarity index 100% rename from schema/versions/mysql/98.sql rename to sql/mysql/migrations/98.sql diff --git a/schema/versions/mysql/99.sql b/sql/mysql/migrations/99.sql similarity index 100% rename from schema/versions/mysql/99.sql rename to sql/mysql/migrations/99.sql diff --git a/schema/ttrss_schema_mysql.sql b/sql/mysql/schema.sql similarity index 100% rename from schema/ttrss_schema_mysql.sql rename to sql/mysql/schema.sql diff --git a/schema/versions/pgsql/10.sql b/sql/pgsql/migrations/10.sql similarity index 100% rename from schema/versions/pgsql/10.sql rename to sql/pgsql/migrations/10.sql diff --git a/schema/versions/pgsql/100.sql b/sql/pgsql/migrations/100.sql similarity index 100% rename from schema/versions/pgsql/100.sql rename to sql/pgsql/migrations/100.sql diff --git a/schema/versions/pgsql/101.sql b/sql/pgsql/migrations/101.sql similarity index 100% rename from schema/versions/pgsql/101.sql rename to sql/pgsql/migrations/101.sql diff --git a/schema/versions/pgsql/102.sql b/sql/pgsql/migrations/102.sql similarity index 100% rename from schema/versions/pgsql/102.sql rename to sql/pgsql/migrations/102.sql diff --git a/schema/versions/pgsql/103.sql b/sql/pgsql/migrations/103.sql similarity index 100% rename from schema/versions/pgsql/103.sql rename to sql/pgsql/migrations/103.sql diff --git a/schema/versions/pgsql/104.sql b/sql/pgsql/migrations/104.sql similarity index 100% rename from schema/versions/pgsql/104.sql rename to sql/pgsql/migrations/104.sql diff --git a/schema/versions/pgsql/105.sql b/sql/pgsql/migrations/105.sql similarity index 100% rename from schema/versions/pgsql/105.sql rename to sql/pgsql/migrations/105.sql diff --git a/schema/versions/pgsql/106.sql b/sql/pgsql/migrations/106.sql similarity index 100% rename from schema/versions/pgsql/106.sql rename to sql/pgsql/migrations/106.sql diff --git a/schema/versions/pgsql/107.sql b/sql/pgsql/migrations/107.sql similarity index 100% rename from schema/versions/pgsql/107.sql rename to sql/pgsql/migrations/107.sql diff --git a/schema/versions/pgsql/108.sql b/sql/pgsql/migrations/108.sql similarity index 100% rename from schema/versions/pgsql/108.sql rename to sql/pgsql/migrations/108.sql diff --git a/schema/versions/pgsql/109.sql b/sql/pgsql/migrations/109.sql similarity index 100% rename from schema/versions/pgsql/109.sql rename to sql/pgsql/migrations/109.sql diff --git a/schema/versions/pgsql/11.sql b/sql/pgsql/migrations/11.sql similarity index 100% rename from schema/versions/pgsql/11.sql rename to sql/pgsql/migrations/11.sql diff --git a/schema/versions/pgsql/110.sql b/sql/pgsql/migrations/110.sql similarity index 100% rename from schema/versions/pgsql/110.sql rename to sql/pgsql/migrations/110.sql diff --git a/schema/versions/pgsql/111.sql b/sql/pgsql/migrations/111.sql similarity index 100% rename from schema/versions/pgsql/111.sql rename to sql/pgsql/migrations/111.sql diff --git a/schema/versions/pgsql/112.sql b/sql/pgsql/migrations/112.sql similarity index 100% rename from schema/versions/pgsql/112.sql rename to sql/pgsql/migrations/112.sql diff --git a/schema/versions/pgsql/113.sql b/sql/pgsql/migrations/113.sql similarity index 100% rename from schema/versions/pgsql/113.sql rename to sql/pgsql/migrations/113.sql diff --git a/schema/versions/pgsql/114.sql b/sql/pgsql/migrations/114.sql similarity index 100% rename from schema/versions/pgsql/114.sql rename to sql/pgsql/migrations/114.sql diff --git a/schema/versions/pgsql/115.sql b/sql/pgsql/migrations/115.sql similarity index 100% rename from schema/versions/pgsql/115.sql rename to sql/pgsql/migrations/115.sql diff --git a/schema/versions/pgsql/116.sql b/sql/pgsql/migrations/116.sql similarity index 100% rename from schema/versions/pgsql/116.sql rename to sql/pgsql/migrations/116.sql diff --git a/schema/versions/pgsql/117.sql b/sql/pgsql/migrations/117.sql similarity index 100% rename from schema/versions/pgsql/117.sql rename to sql/pgsql/migrations/117.sql diff --git a/schema/versions/pgsql/118.sql b/sql/pgsql/migrations/118.sql similarity index 100% rename from schema/versions/pgsql/118.sql rename to sql/pgsql/migrations/118.sql diff --git a/schema/versions/pgsql/119.sql b/sql/pgsql/migrations/119.sql similarity index 100% rename from schema/versions/pgsql/119.sql rename to sql/pgsql/migrations/119.sql diff --git a/schema/versions/pgsql/12.sql b/sql/pgsql/migrations/12.sql similarity index 100% rename from schema/versions/pgsql/12.sql rename to sql/pgsql/migrations/12.sql diff --git a/schema/versions/pgsql/120.sql b/sql/pgsql/migrations/120.sql similarity index 100% rename from schema/versions/pgsql/120.sql rename to sql/pgsql/migrations/120.sql diff --git a/schema/versions/pgsql/121.sql b/sql/pgsql/migrations/121.sql similarity index 100% rename from schema/versions/pgsql/121.sql rename to sql/pgsql/migrations/121.sql diff --git a/schema/versions/pgsql/122.sql b/sql/pgsql/migrations/122.sql similarity index 100% rename from schema/versions/pgsql/122.sql rename to sql/pgsql/migrations/122.sql diff --git a/schema/versions/pgsql/123.sql b/sql/pgsql/migrations/123.sql similarity index 100% rename from schema/versions/pgsql/123.sql rename to sql/pgsql/migrations/123.sql diff --git a/schema/versions/pgsql/124.sql b/sql/pgsql/migrations/124.sql similarity index 100% rename from schema/versions/pgsql/124.sql rename to sql/pgsql/migrations/124.sql diff --git a/schema/versions/pgsql/125.sql b/sql/pgsql/migrations/125.sql similarity index 100% rename from schema/versions/pgsql/125.sql rename to sql/pgsql/migrations/125.sql diff --git a/schema/versions/pgsql/126.sql b/sql/pgsql/migrations/126.sql similarity index 100% rename from schema/versions/pgsql/126.sql rename to sql/pgsql/migrations/126.sql diff --git a/schema/versions/pgsql/127.sql b/sql/pgsql/migrations/127.sql similarity index 100% rename from schema/versions/pgsql/127.sql rename to sql/pgsql/migrations/127.sql diff --git a/schema/versions/pgsql/128.sql b/sql/pgsql/migrations/128.sql similarity index 100% rename from schema/versions/pgsql/128.sql rename to sql/pgsql/migrations/128.sql diff --git a/schema/versions/pgsql/129.sql b/sql/pgsql/migrations/129.sql similarity index 100% rename from schema/versions/pgsql/129.sql rename to sql/pgsql/migrations/129.sql diff --git a/schema/versions/pgsql/13.sql b/sql/pgsql/migrations/13.sql similarity index 100% rename from schema/versions/pgsql/13.sql rename to sql/pgsql/migrations/13.sql diff --git a/schema/versions/pgsql/130.sql b/sql/pgsql/migrations/130.sql similarity index 100% rename from schema/versions/pgsql/130.sql rename to sql/pgsql/migrations/130.sql diff --git a/schema/versions/pgsql/131.sql b/sql/pgsql/migrations/131.sql similarity index 100% rename from schema/versions/pgsql/131.sql rename to sql/pgsql/migrations/131.sql diff --git a/schema/versions/pgsql/132.sql b/sql/pgsql/migrations/132.sql similarity index 100% rename from schema/versions/pgsql/132.sql rename to sql/pgsql/migrations/132.sql diff --git a/schema/versions/pgsql/133.sql b/sql/pgsql/migrations/133.sql similarity index 100% rename from schema/versions/pgsql/133.sql rename to sql/pgsql/migrations/133.sql diff --git a/schema/versions/pgsql/134.sql b/sql/pgsql/migrations/134.sql similarity index 100% rename from schema/versions/pgsql/134.sql rename to sql/pgsql/migrations/134.sql diff --git a/schema/versions/pgsql/135.sql b/sql/pgsql/migrations/135.sql similarity index 100% rename from schema/versions/pgsql/135.sql rename to sql/pgsql/migrations/135.sql diff --git a/schema/versions/pgsql/136.sql b/sql/pgsql/migrations/136.sql similarity index 100% rename from schema/versions/pgsql/136.sql rename to sql/pgsql/migrations/136.sql diff --git a/schema/versions/pgsql/137.sql b/sql/pgsql/migrations/137.sql similarity index 100% rename from schema/versions/pgsql/137.sql rename to sql/pgsql/migrations/137.sql diff --git a/schema/versions/pgsql/138.sql b/sql/pgsql/migrations/138.sql similarity index 100% rename from schema/versions/pgsql/138.sql rename to sql/pgsql/migrations/138.sql diff --git a/schema/versions/pgsql/139.sql b/sql/pgsql/migrations/139.sql similarity index 100% rename from schema/versions/pgsql/139.sql rename to sql/pgsql/migrations/139.sql diff --git a/schema/versions/pgsql/14.sql b/sql/pgsql/migrations/14.sql similarity index 100% rename from schema/versions/pgsql/14.sql rename to sql/pgsql/migrations/14.sql diff --git a/schema/versions/pgsql/140.sql b/sql/pgsql/migrations/140.sql similarity index 100% rename from schema/versions/pgsql/140.sql rename to sql/pgsql/migrations/140.sql diff --git a/schema/versions/pgsql/141.sql b/sql/pgsql/migrations/141.sql similarity index 100% rename from schema/versions/pgsql/141.sql rename to sql/pgsql/migrations/141.sql diff --git a/schema/versions/pgsql/142.sql b/sql/pgsql/migrations/142.sql similarity index 100% rename from schema/versions/pgsql/142.sql rename to sql/pgsql/migrations/142.sql diff --git a/schema/versions/pgsql/15.sql b/sql/pgsql/migrations/15.sql similarity index 100% rename from schema/versions/pgsql/15.sql rename to sql/pgsql/migrations/15.sql diff --git a/schema/versions/pgsql/16.sql b/sql/pgsql/migrations/16.sql similarity index 100% rename from schema/versions/pgsql/16.sql rename to sql/pgsql/migrations/16.sql diff --git a/schema/versions/pgsql/17.sql b/sql/pgsql/migrations/17.sql similarity index 100% rename from schema/versions/pgsql/17.sql rename to sql/pgsql/migrations/17.sql diff --git a/schema/versions/pgsql/18.sql b/sql/pgsql/migrations/18.sql similarity index 100% rename from schema/versions/pgsql/18.sql rename to sql/pgsql/migrations/18.sql diff --git a/schema/versions/pgsql/19.sql b/sql/pgsql/migrations/19.sql similarity index 100% rename from schema/versions/pgsql/19.sql rename to sql/pgsql/migrations/19.sql diff --git a/schema/versions/pgsql/20.sql b/sql/pgsql/migrations/20.sql similarity index 100% rename from schema/versions/pgsql/20.sql rename to sql/pgsql/migrations/20.sql diff --git a/schema/versions/pgsql/21.sql b/sql/pgsql/migrations/21.sql similarity index 100% rename from schema/versions/pgsql/21.sql rename to sql/pgsql/migrations/21.sql diff --git a/schema/versions/pgsql/22.sql b/sql/pgsql/migrations/22.sql similarity index 100% rename from schema/versions/pgsql/22.sql rename to sql/pgsql/migrations/22.sql diff --git a/schema/versions/pgsql/23.sql b/sql/pgsql/migrations/23.sql similarity index 100% rename from schema/versions/pgsql/23.sql rename to sql/pgsql/migrations/23.sql diff --git a/schema/versions/pgsql/24.sql b/sql/pgsql/migrations/24.sql similarity index 100% rename from schema/versions/pgsql/24.sql rename to sql/pgsql/migrations/24.sql diff --git a/schema/versions/pgsql/25.sql b/sql/pgsql/migrations/25.sql similarity index 100% rename from schema/versions/pgsql/25.sql rename to sql/pgsql/migrations/25.sql diff --git a/schema/versions/pgsql/26.sql b/sql/pgsql/migrations/26.sql similarity index 100% rename from schema/versions/pgsql/26.sql rename to sql/pgsql/migrations/26.sql diff --git a/schema/versions/pgsql/27.sql b/sql/pgsql/migrations/27.sql similarity index 100% rename from schema/versions/pgsql/27.sql rename to sql/pgsql/migrations/27.sql diff --git a/schema/versions/pgsql/28.sql b/sql/pgsql/migrations/28.sql similarity index 100% rename from schema/versions/pgsql/28.sql rename to sql/pgsql/migrations/28.sql diff --git a/schema/versions/pgsql/29.sql b/sql/pgsql/migrations/29.sql similarity index 100% rename from schema/versions/pgsql/29.sql rename to sql/pgsql/migrations/29.sql diff --git a/schema/versions/pgsql/3.sql b/sql/pgsql/migrations/3.sql similarity index 100% rename from schema/versions/pgsql/3.sql rename to sql/pgsql/migrations/3.sql diff --git a/schema/versions/pgsql/30.sql b/sql/pgsql/migrations/30.sql similarity index 100% rename from schema/versions/pgsql/30.sql rename to sql/pgsql/migrations/30.sql diff --git a/schema/versions/pgsql/31.sql b/sql/pgsql/migrations/31.sql similarity index 100% rename from schema/versions/pgsql/31.sql rename to sql/pgsql/migrations/31.sql diff --git a/schema/versions/pgsql/32.sql b/sql/pgsql/migrations/32.sql similarity index 100% rename from schema/versions/pgsql/32.sql rename to sql/pgsql/migrations/32.sql diff --git a/schema/versions/pgsql/33.sql b/sql/pgsql/migrations/33.sql similarity index 100% rename from schema/versions/pgsql/33.sql rename to sql/pgsql/migrations/33.sql diff --git a/schema/versions/pgsql/34.sql b/sql/pgsql/migrations/34.sql similarity index 100% rename from schema/versions/pgsql/34.sql rename to sql/pgsql/migrations/34.sql diff --git a/schema/versions/pgsql/35.sql b/sql/pgsql/migrations/35.sql similarity index 100% rename from schema/versions/pgsql/35.sql rename to sql/pgsql/migrations/35.sql diff --git a/schema/versions/pgsql/36.sql b/sql/pgsql/migrations/36.sql similarity index 100% rename from schema/versions/pgsql/36.sql rename to sql/pgsql/migrations/36.sql diff --git a/schema/versions/pgsql/37.sql b/sql/pgsql/migrations/37.sql similarity index 100% rename from schema/versions/pgsql/37.sql rename to sql/pgsql/migrations/37.sql diff --git a/schema/versions/pgsql/38.sql b/sql/pgsql/migrations/38.sql similarity index 100% rename from schema/versions/pgsql/38.sql rename to sql/pgsql/migrations/38.sql diff --git a/schema/versions/pgsql/39.sql b/sql/pgsql/migrations/39.sql similarity index 100% rename from schema/versions/pgsql/39.sql rename to sql/pgsql/migrations/39.sql diff --git a/schema/versions/pgsql/4.sql b/sql/pgsql/migrations/4.sql similarity index 100% rename from schema/versions/pgsql/4.sql rename to sql/pgsql/migrations/4.sql diff --git a/schema/versions/pgsql/40.sql b/sql/pgsql/migrations/40.sql similarity index 100% rename from schema/versions/pgsql/40.sql rename to sql/pgsql/migrations/40.sql diff --git a/schema/versions/pgsql/41.sql b/sql/pgsql/migrations/41.sql similarity index 100% rename from schema/versions/pgsql/41.sql rename to sql/pgsql/migrations/41.sql diff --git a/schema/versions/pgsql/42.sql b/sql/pgsql/migrations/42.sql similarity index 100% rename from schema/versions/pgsql/42.sql rename to sql/pgsql/migrations/42.sql diff --git a/schema/versions/pgsql/43.sql b/sql/pgsql/migrations/43.sql similarity index 100% rename from schema/versions/pgsql/43.sql rename to sql/pgsql/migrations/43.sql diff --git a/schema/versions/pgsql/44.sql b/sql/pgsql/migrations/44.sql similarity index 100% rename from schema/versions/pgsql/44.sql rename to sql/pgsql/migrations/44.sql diff --git a/schema/versions/pgsql/45.sql b/sql/pgsql/migrations/45.sql similarity index 100% rename from schema/versions/pgsql/45.sql rename to sql/pgsql/migrations/45.sql diff --git a/schema/versions/pgsql/46.sql b/sql/pgsql/migrations/46.sql similarity index 100% rename from schema/versions/pgsql/46.sql rename to sql/pgsql/migrations/46.sql diff --git a/schema/versions/pgsql/47.sql b/sql/pgsql/migrations/47.sql similarity index 100% rename from schema/versions/pgsql/47.sql rename to sql/pgsql/migrations/47.sql diff --git a/schema/versions/pgsql/48.sql b/sql/pgsql/migrations/48.sql similarity index 100% rename from schema/versions/pgsql/48.sql rename to sql/pgsql/migrations/48.sql diff --git a/schema/versions/pgsql/49.sql b/sql/pgsql/migrations/49.sql similarity index 100% rename from schema/versions/pgsql/49.sql rename to sql/pgsql/migrations/49.sql diff --git a/schema/versions/pgsql/5.sql b/sql/pgsql/migrations/5.sql similarity index 100% rename from schema/versions/pgsql/5.sql rename to sql/pgsql/migrations/5.sql diff --git a/schema/versions/pgsql/50.sql b/sql/pgsql/migrations/50.sql similarity index 100% rename from schema/versions/pgsql/50.sql rename to sql/pgsql/migrations/50.sql diff --git a/schema/versions/pgsql/51.sql b/sql/pgsql/migrations/51.sql similarity index 100% rename from schema/versions/pgsql/51.sql rename to sql/pgsql/migrations/51.sql diff --git a/schema/versions/pgsql/52.sql b/sql/pgsql/migrations/52.sql similarity index 100% rename from schema/versions/pgsql/52.sql rename to sql/pgsql/migrations/52.sql diff --git a/schema/versions/pgsql/53.sql b/sql/pgsql/migrations/53.sql similarity index 100% rename from schema/versions/pgsql/53.sql rename to sql/pgsql/migrations/53.sql diff --git a/schema/versions/pgsql/54.sql b/sql/pgsql/migrations/54.sql similarity index 100% rename from schema/versions/pgsql/54.sql rename to sql/pgsql/migrations/54.sql diff --git a/schema/versions/pgsql/55.sql b/sql/pgsql/migrations/55.sql similarity index 100% rename from schema/versions/pgsql/55.sql rename to sql/pgsql/migrations/55.sql diff --git a/schema/versions/pgsql/56.sql b/sql/pgsql/migrations/56.sql similarity index 100% rename from schema/versions/pgsql/56.sql rename to sql/pgsql/migrations/56.sql diff --git a/schema/versions/pgsql/57.sql b/sql/pgsql/migrations/57.sql similarity index 100% rename from schema/versions/pgsql/57.sql rename to sql/pgsql/migrations/57.sql diff --git a/schema/versions/pgsql/58.sql b/sql/pgsql/migrations/58.sql similarity index 100% rename from schema/versions/pgsql/58.sql rename to sql/pgsql/migrations/58.sql diff --git a/schema/versions/pgsql/59.sql b/sql/pgsql/migrations/59.sql similarity index 100% rename from schema/versions/pgsql/59.sql rename to sql/pgsql/migrations/59.sql diff --git a/schema/versions/pgsql/6.sql b/sql/pgsql/migrations/6.sql similarity index 100% rename from schema/versions/pgsql/6.sql rename to sql/pgsql/migrations/6.sql diff --git a/schema/versions/pgsql/60.sql b/sql/pgsql/migrations/60.sql similarity index 100% rename from schema/versions/pgsql/60.sql rename to sql/pgsql/migrations/60.sql diff --git a/schema/versions/pgsql/61.sql b/sql/pgsql/migrations/61.sql similarity index 100% rename from schema/versions/pgsql/61.sql rename to sql/pgsql/migrations/61.sql diff --git a/schema/versions/pgsql/62.sql b/sql/pgsql/migrations/62.sql similarity index 100% rename from schema/versions/pgsql/62.sql rename to sql/pgsql/migrations/62.sql diff --git a/schema/versions/pgsql/63.sql b/sql/pgsql/migrations/63.sql similarity index 100% rename from schema/versions/pgsql/63.sql rename to sql/pgsql/migrations/63.sql diff --git a/schema/versions/pgsql/64.sql b/sql/pgsql/migrations/64.sql similarity index 100% rename from schema/versions/pgsql/64.sql rename to sql/pgsql/migrations/64.sql diff --git a/schema/versions/pgsql/65.sql b/sql/pgsql/migrations/65.sql similarity index 100% rename from schema/versions/pgsql/65.sql rename to sql/pgsql/migrations/65.sql diff --git a/schema/versions/pgsql/66.sql b/sql/pgsql/migrations/66.sql similarity index 100% rename from schema/versions/pgsql/66.sql rename to sql/pgsql/migrations/66.sql diff --git a/schema/versions/pgsql/67.sql b/sql/pgsql/migrations/67.sql similarity index 100% rename from schema/versions/pgsql/67.sql rename to sql/pgsql/migrations/67.sql diff --git a/schema/versions/pgsql/68.sql b/sql/pgsql/migrations/68.sql similarity index 100% rename from schema/versions/pgsql/68.sql rename to sql/pgsql/migrations/68.sql diff --git a/schema/versions/pgsql/69.sql b/sql/pgsql/migrations/69.sql similarity index 100% rename from schema/versions/pgsql/69.sql rename to sql/pgsql/migrations/69.sql diff --git a/schema/versions/pgsql/7.sql b/sql/pgsql/migrations/7.sql similarity index 100% rename from schema/versions/pgsql/7.sql rename to sql/pgsql/migrations/7.sql diff --git a/schema/versions/pgsql/70.sql b/sql/pgsql/migrations/70.sql similarity index 100% rename from schema/versions/pgsql/70.sql rename to sql/pgsql/migrations/70.sql diff --git a/schema/versions/pgsql/71.sql b/sql/pgsql/migrations/71.sql similarity index 100% rename from schema/versions/pgsql/71.sql rename to sql/pgsql/migrations/71.sql diff --git a/schema/versions/pgsql/72.sql b/sql/pgsql/migrations/72.sql similarity index 100% rename from schema/versions/pgsql/72.sql rename to sql/pgsql/migrations/72.sql diff --git a/schema/versions/pgsql/73.sql b/sql/pgsql/migrations/73.sql similarity index 100% rename from schema/versions/pgsql/73.sql rename to sql/pgsql/migrations/73.sql diff --git a/schema/versions/pgsql/74.sql b/sql/pgsql/migrations/74.sql similarity index 100% rename from schema/versions/pgsql/74.sql rename to sql/pgsql/migrations/74.sql diff --git a/schema/versions/pgsql/75.sql b/sql/pgsql/migrations/75.sql similarity index 100% rename from schema/versions/pgsql/75.sql rename to sql/pgsql/migrations/75.sql diff --git a/schema/versions/pgsql/76.sql b/sql/pgsql/migrations/76.sql similarity index 100% rename from schema/versions/pgsql/76.sql rename to sql/pgsql/migrations/76.sql diff --git a/schema/versions/pgsql/77.sql b/sql/pgsql/migrations/77.sql similarity index 100% rename from schema/versions/pgsql/77.sql rename to sql/pgsql/migrations/77.sql diff --git a/schema/versions/pgsql/78.sql b/sql/pgsql/migrations/78.sql similarity index 100% rename from schema/versions/pgsql/78.sql rename to sql/pgsql/migrations/78.sql diff --git a/schema/versions/pgsql/79.sql b/sql/pgsql/migrations/79.sql similarity index 100% rename from schema/versions/pgsql/79.sql rename to sql/pgsql/migrations/79.sql diff --git a/schema/versions/pgsql/8.sql b/sql/pgsql/migrations/8.sql similarity index 100% rename from schema/versions/pgsql/8.sql rename to sql/pgsql/migrations/8.sql diff --git a/schema/versions/pgsql/80.sql b/sql/pgsql/migrations/80.sql similarity index 100% rename from schema/versions/pgsql/80.sql rename to sql/pgsql/migrations/80.sql diff --git a/schema/versions/pgsql/81.sql b/sql/pgsql/migrations/81.sql similarity index 100% rename from schema/versions/pgsql/81.sql rename to sql/pgsql/migrations/81.sql diff --git a/schema/versions/pgsql/82.sql b/sql/pgsql/migrations/82.sql similarity index 100% rename from schema/versions/pgsql/82.sql rename to sql/pgsql/migrations/82.sql diff --git a/schema/versions/pgsql/83.sql b/sql/pgsql/migrations/83.sql similarity index 100% rename from schema/versions/pgsql/83.sql rename to sql/pgsql/migrations/83.sql diff --git a/schema/versions/pgsql/84.sql b/sql/pgsql/migrations/84.sql similarity index 100% rename from schema/versions/pgsql/84.sql rename to sql/pgsql/migrations/84.sql diff --git a/schema/versions/pgsql/85.sql b/sql/pgsql/migrations/85.sql similarity index 100% rename from schema/versions/pgsql/85.sql rename to sql/pgsql/migrations/85.sql diff --git a/schema/versions/pgsql/86.sql b/sql/pgsql/migrations/86.sql similarity index 100% rename from schema/versions/pgsql/86.sql rename to sql/pgsql/migrations/86.sql diff --git a/schema/versions/pgsql/87.sql b/sql/pgsql/migrations/87.sql similarity index 100% rename from schema/versions/pgsql/87.sql rename to sql/pgsql/migrations/87.sql diff --git a/schema/versions/pgsql/88.sql b/sql/pgsql/migrations/88.sql similarity index 100% rename from schema/versions/pgsql/88.sql rename to sql/pgsql/migrations/88.sql diff --git a/schema/versions/pgsql/89.sql b/sql/pgsql/migrations/89.sql similarity index 100% rename from schema/versions/pgsql/89.sql rename to sql/pgsql/migrations/89.sql diff --git a/schema/versions/pgsql/9.sql b/sql/pgsql/migrations/9.sql similarity index 100% rename from schema/versions/pgsql/9.sql rename to sql/pgsql/migrations/9.sql diff --git a/schema/versions/pgsql/90.sql b/sql/pgsql/migrations/90.sql similarity index 100% rename from schema/versions/pgsql/90.sql rename to sql/pgsql/migrations/90.sql diff --git a/schema/versions/pgsql/91.sql b/sql/pgsql/migrations/91.sql similarity index 100% rename from schema/versions/pgsql/91.sql rename to sql/pgsql/migrations/91.sql diff --git a/schema/versions/pgsql/92.sql b/sql/pgsql/migrations/92.sql similarity index 100% rename from schema/versions/pgsql/92.sql rename to sql/pgsql/migrations/92.sql diff --git a/schema/versions/pgsql/93.sql b/sql/pgsql/migrations/93.sql similarity index 100% rename from schema/versions/pgsql/93.sql rename to sql/pgsql/migrations/93.sql diff --git a/schema/versions/pgsql/94.sql b/sql/pgsql/migrations/94.sql similarity index 100% rename from schema/versions/pgsql/94.sql rename to sql/pgsql/migrations/94.sql diff --git a/schema/versions/pgsql/95.sql b/sql/pgsql/migrations/95.sql similarity index 100% rename from schema/versions/pgsql/95.sql rename to sql/pgsql/migrations/95.sql diff --git a/schema/versions/pgsql/96.sql b/sql/pgsql/migrations/96.sql similarity index 100% rename from schema/versions/pgsql/96.sql rename to sql/pgsql/migrations/96.sql diff --git a/schema/versions/pgsql/97.sql b/sql/pgsql/migrations/97.sql similarity index 100% rename from schema/versions/pgsql/97.sql rename to sql/pgsql/migrations/97.sql diff --git a/schema/versions/pgsql/98.sql b/sql/pgsql/migrations/98.sql similarity index 100% rename from schema/versions/pgsql/98.sql rename to sql/pgsql/migrations/98.sql diff --git a/schema/versions/pgsql/99.sql b/sql/pgsql/migrations/99.sql similarity index 100% rename from schema/versions/pgsql/99.sql rename to sql/pgsql/migrations/99.sql diff --git a/schema/ttrss_schema_pgsql.sql b/sql/pgsql/schema.sql similarity index 100% rename from schema/ttrss_schema_pgsql.sql rename to sql/pgsql/schema.sql diff --git a/update.php b/update.php index 94a6bb5cad814f285405d970a56db6aee836b881..d19c5f8239d3d8da34fab923fd13246d6fbfeb4c 100755 --- a/update.php +++ b/update.php @@ -145,10 +145,8 @@ require_once "errorhandler.php"; } - if (!isset($options['update-schema'])) { - if (Db_Updater::is_update_required()) { - die("Schema version is wrong, please upgrade the database (--update-schema).\n"); - } + if (!isset($options['update-schema']) && Config::is_migration_needed()) { + die("Schema version is wrong, please upgrade the database (--update-schema).\n"); } Debug::set_enabled(true); @@ -372,7 +370,32 @@ } if (isset($options["update-schema"])) { - Debug::log("Checking for updates (" . Config::get(Config::DB_TYPE) . ")..."); + if (Config::is_migration_needed()) { + + if ($options["update-schema"] != "force-yes") { + Debug::log("Type 'yes' to continue."); + + if (read_stdin() != 'yes') + exit; + } else { + Debug::log("Proceeding to update without confirmation..."); + } + + if (!isset($options["log-level"])) { + Debug::set_loglevel(Debug::$LOG_VERBOSE); + } + + $migrations = Config::get_migrations(); + + Debug::log("Migrating schema to version " . $migrations->get_max_version()); + + $migrations->migrate(); + + } else { + Debug::log("Database schema is already at latest version."); + } + + /*Debug::log("Checking for updates (" . Config::get(Config::DB_TYPE) . ")..."); $updater = new Db_Updater(Db::pdo(), Config::get(Config::DB_TYPE)); @@ -412,7 +435,7 @@ Debug::log("All done."); } else { Debug::log("Database schema is already at latest version."); - } + } */ }