diff options
| author | 2025-10-24 12:49:29 +0200 | |
|---|---|---|
| committer | 2025-10-24 12:49:29 +0200 | |
| commit | 9833d8197686d9614fc5cbd300e0761a520e2e6d (patch) | |
| tree | bc03ed08a242bb55146232b3babf827aa6348b16 /app/Models/CategoryDAOSQLite.php | |
| parent | 90c69e04bb25ff237b4ca1add7bd87feac646b33 (diff) | |
Better SQL auto-update f.kind (#8148)
Add a little help to make sure that feed.kind gets added during the first call.
Tested that replacing the DB with a backup from Febuary 2020 just works, automatically adding new columns since FreshRSS 1.20.0.
Diffstat (limited to 'app/Models/CategoryDAOSQLite.php')
| -rw-r--r-- | app/Models/CategoryDAOSQLite.php | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/app/Models/CategoryDAOSQLite.php b/app/Models/CategoryDAOSQLite.php index ee59d0754..575656e67 100644 --- a/app/Models/CategoryDAOSQLite.php +++ b/app/Models/CategoryDAOSQLite.php @@ -11,6 +11,15 @@ class FreshRSS_CategoryDAOSQLite extends FreshRSS_CategoryDAO { /** @param array{0:string,1:int,2:string} $errorInfo */ #[\Override] protected function autoUpdateDb(array $errorInfo): bool { + if (isset($errorInfo[0])) { + $errorLines = explode("\n", $errorInfo[2], 2); // The relevant column name is on the first line, other lines are noise + if (str_contains($errorLines[0], 'f.')) { // Coming from a feed sub-query + $feedDao = FreshRSS_Factory::createFeedDao(); + if ($feedDao->autoUpdateDb($errorInfo)) { + return true; + } + } + } if (($tableInfo = $this->pdo->query("PRAGMA table_info('category')")) !== false) { $columns = $tableInfo->fetchAll(PDO::FETCH_COLUMN, 1); foreach (['kind', 'lastUpdate', 'error', 'attributes'] as $column) { |
