aboutsummaryrefslogtreecommitdiff
path: root/app/Models/CategoryDAOSQLite.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2025-10-24 12:49:29 +0200
committerGravatar GitHub <noreply@github.com> 2025-10-24 12:49:29 +0200
commit9833d8197686d9614fc5cbd300e0761a520e2e6d (patch)
treebc03ed08a242bb55146232b3babf827aa6348b16 /app/Models/CategoryDAOSQLite.php
parent90c69e04bb25ff237b4ca1add7bd87feac646b33 (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.php9
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) {