From 7f5fbd61688f68e9ff46c8e64fa51ccb0f6b3327 Mon Sep 17 00:00:00 2001 From: Chen Asraf Date: Sat, 29 Nov 2025 01:58:22 +0200 Subject: [PATCH] refactor: fix seed without slug --- lib/Migration/SeedHelper.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/Migration/SeedHelper.php b/lib/Migration/SeedHelper.php index 36e1093..dfe8628 100644 --- a/lib/Migration/SeedHelper.php +++ b/lib/Migration/SeedHelper.php @@ -953,7 +953,19 @@ class SeedHelper { . "[/list]\n" . $l->t('Feel free to start a new discussion or reply to existing threads. Happy posting!'); + // Check if slug column still exists (for backwards compatibility with old migrations) + // Use a query to check column existence since schema introspection APIs vary + $hasSlugColumn = true; + try { + $checkQb = $db->getQueryBuilder(); + $checkQb->select('slug')->from('forum_posts')->setMaxResults(1); + $checkQb->executeQuery()->closeCursor(); + } catch (\Exception $e) { + $hasSlugColumn = false; + } + // Build post values - slug is optional (removed in Version8) + $qb = $db->getQueryBuilder(); $postValues = [ 'thread_id' => $qb->createNamedParameter($threadId, \OCP\DB\QueryBuilder\IQueryBuilder::PARAM_INT), 'author_id' => $qb->createNamedParameter($adminUserId), @@ -964,16 +976,10 @@ class SeedHelper { 'created_at' => $qb->createNamedParameter($timestamp, \OCP\DB\QueryBuilder\IQueryBuilder::PARAM_INT), 'updated_at' => $qb->createNamedParameter($timestamp, \OCP\DB\QueryBuilder\IQueryBuilder::PARAM_INT), ]; - - // Check if slug column still exists (for backwards compatibility with old migrations) - $schemaManager = $db->createSchemaManager(); - $tablePrefix = \OC::$server->get(\OCP\IConfig::class)->getSystemValueString('dbtableprefix', 'oc_'); - $postsTable = $schemaManager->introspectTable($tablePrefix . 'forum_posts'); - if ($postsTable->hasColumn('slug')) { + if ($hasSlugColumn) { $postValues['slug'] = $qb->createNamedParameter('welcome-to-nextcloud-forums-1'); } - $qb = $db->getQueryBuilder(); $qb->insert('forum_posts') ->values($postValues) ->executeStatement();