From 2bc226eb5704dd2d7d2d5baf37e4910eadb951e5 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Fri, 26 Apr 2024 09:53:00 +0200 Subject: [PATCH] Drop Gitea-specific columns from two tables Gitea and Forgejo chose to implement wiki branch naming differently, but Forgejo picked the Gitea migration anyway, resulting in an unused column in the database, which wasn't part of the `Repository` struct either - something warned about during startup, too. Similarly, Forgejo chose not to implement User badges at all - but kept the existing code for it -, and the `badge` table ended up with an unused `slug` column due to a Gitea migration, and resulted in another warning at startup. To keep the database consistent with the code, and to get rid of these warnings, lets introduce a new migration, which simply drops these Gitea-specific columns from the database. Fixes #3463. Signed-off-by: Gergely Nagy --- models/forgejo_migrations/migrate.go | 2 ++ models/forgejo_migrations/v14.go | 43 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 models/forgejo_migrations/v14.go diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go index b9e0e384cf..3b6da74149 100644 --- a/models/forgejo_migrations/migrate.go +++ b/models/forgejo_migrations/migrate.go @@ -64,6 +64,8 @@ var migrations = []*Migration{ NewMigration("Add repo_archive_download_count table", forgejo_v1_22.AddRepoArchiveDownloadCount), // v13 -> v14 NewMigration("Add `hide_archive_links` column to `release` table", AddHideArchiveLinksToRelease), + // v14 -> v15 + NewMigration("Remove Gitea-specific columns from the repository and badge tables", RemoveGiteaSpecificColumnsFromRepositoryAndBadge), } // GetCurrentDBVersion returns the current Forgejo database version. diff --git a/models/forgejo_migrations/v14.go b/models/forgejo_migrations/v14.go new file mode 100644 index 0000000000..f6dd35ecf0 --- /dev/null +++ b/models/forgejo_migrations/v14.go @@ -0,0 +1,43 @@ +// Copyright 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgejo_migrations //nolint:revive + +import ( + "code.gitea.io/gitea/models/migrations/base" + + "xorm.io/xorm" +) + +func RemoveGiteaSpecificColumnsFromRepositoryAndBadge(x *xorm.Engine) error { + // Make sure the columns exist before dropping them + type Repository struct { + ID int64 + DefaultWikiBranch string + } + if err := x.Sync(&Repository{}); err != nil { + return err + } + + type Badge struct { + ID int64 `xorm:"pk autoincr"` + Slug string + } + err := x.Sync(new(Badge)) + if err != nil { + return err + } + + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + if err := base.DropTableColumns(sess, "repository", "default_wiki_branch"); err != nil { + return err + } + if err := base.DropTableColumns(sess, "badge", "slug"); err != nil { + return err + } + return sess.Commit() +}