From d69fdff51b3f941cd566afa0777665d02f1409fc Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 16 Sep 2025 11:50:53 +0200 Subject: [PATCH] Cleanup columns in forges table (#5517) --- server/model/forge.go | 4 +-- .../migration/027_fix_forge_columns.go | 25 ++++++++++++++++++ server/store/datastore/migration/migration.go | 1 + .../datastore/migration/test-files/sqlite.db | Bin 21278720 -> 21282816 bytes 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 server/store/datastore/migration/027_fix_forge_columns.go diff --git a/server/model/forge.go b/server/model/forge.go index d626b652d..f2b87bfc8 100644 --- a/server/model/forge.go +++ b/server/model/forge.go @@ -30,8 +30,8 @@ type Forge struct { ID int64 `json:"id" xorm:"pk autoincr 'id'"` Type ForgeType `json:"type" xorm:"VARCHAR(250)"` URL string `json:"url" xorm:"VARCHAR(500) 'url'"` - OAuthClientID string `json:"client,omitempty" xorm:"VARCHAR(250)"` - OAuthClientSecret string `json:"-" xorm:"VARCHAR(250)"` // do not expose client secret + OAuthClientID string `json:"client,omitempty" xorm:"VARCHAR(250) 'oauth_client_id'"` + OAuthClientSecret string `json:"-" xorm:"VARCHAR(250) 'oauth_client_secret'"` // do not expose client secret SkipVerify bool `json:"skip_verify,omitempty" xorm:"bool"` OAuthHost string `json:"oauth_host,omitempty" xorm:"VARCHAR(250) 'oauth_host'"` // public url for oauth if different from url AdditionalOptions map[string]any `json:"additional_options,omitempty" xorm:"json"` diff --git a/server/store/datastore/migration/027_fix_forge_columns.go b/server/store/datastore/migration/027_fix_forge_columns.go new file mode 100644 index 000000000..46fcc7a1b --- /dev/null +++ b/server/store/datastore/migration/027_fix_forge_columns.go @@ -0,0 +1,25 @@ +package migration + +import ( + "src.techknowlogick.com/xormigrate" + "xorm.io/xorm" +) + +var fixForgeColumns = xormigrate.Migration{ + ID: "fix-forge-columns", + MigrateSession: func(sess *xorm.Session) (err error) { + if err := renameColumn(sess, "forges", "o_auth_client_i_d", "oauth_client_id"); err != nil { + return err + } + if err := renameColumn(sess, "forges", "o_auth_client_secret", "oauth_client_secret"); err != nil { + return err + } + + // Drop client and client_secret columns if they still exist + if err := dropTableColumns(sess, "forges", "client", "client_secret"); err != nil { + return err + } + + return nil + }, +} diff --git a/server/store/datastore/migration/migration.go b/server/store/datastore/migration/migration.go index ea8d54ca7..e5e72ea78 100644 --- a/server/store/datastore/migration/migration.go +++ b/server/store/datastore/migration/migration.go @@ -54,6 +54,7 @@ var migrationTasks = []*xormigrate.Migration{ &removeRepoScm, &unsanitizeOrgAndUserNames, &replaceZeroForgeIDsInOrgs, + &fixForgeColumns, } var allBeans = []any{ diff --git a/server/store/datastore/migration/test-files/sqlite.db b/server/store/datastore/migration/test-files/sqlite.db index 731dfe5cd164d8550e6c45234a003185ee2add58..02cd0e133c10f52ed6ffb24eb20e5b0a836a3293 100644 GIT binary patch delta 1801 zcmZwId0dlq9Ki8C+h8~pp2>96i9CSlP{ax1eK3$RBT+=V8*`hoT#R5?bSO!tW}!K2 z*@2XHmqiz4hux>$_X!<#S%%$reZIr=?&wl%7Ywq4`Zf=g6H#s!B zPG>FG9lqKa8V}xP@*1;r8?zJbc3pn$t`7g!RD-oVCF)ieMdzy((Y@-*Xpib{@mV^3 z7Nu?fcEzP8CS~g^x~7;()n~;P6sJ35u4;p`aJ4VPWV6|nH8~OQl2Bl2xPDo0GD|DV z+*M^-mAj<8OpDKJPP4`p>qyq8#ljA~V|n~O(o`4F7P~7;=eR4K1x2phy!douedy3^ zk?a3iUnm%;jT~AyyuEk9(-8302l`r%9kA-HtKv@%dmAG)o|C5DbL_!;p^Q$bg1SWFZ?Pkb{vJ1t;WuqcH|~7>j(2gA3zP zfI>__5hh|1CSwYwVj8An24-Rwis42HN--N{I0{E&4vxWG9E)-shk2;Ld@MjE7NQD^ zuo%bV1e}PIa57H8sW=TDRKtrU@WGD&mSP!d5X9+Nju6g3EyAe7nW#qtB51@4oQ1Q| zgmZ8%&cpdwiB)LE1z3$1T!=Ne2y3wp>v1tQ;1XPlR&2y3T!zhvVhb+E6^P+VY{gZ$ z8rR@jv|$_CaUHJ5cI?0nxDhwuX54~XaT{*O9oUIGaThvpH}1i`xDWTE6A$1)?7~BM z7?0pl?8akw98cg$JcXz644%bvcpfj{MeM;#cp0zYRlJ7R@dn<+TX-Aq;9b0j_wfNf z#7FoTUFgOq_!OVvbL_k|aq#iCK~?=`R@|Ns**VR7w1y17(yZu}TI>21{%b zyJU!DsKg-|CP|kJmt;sZNv0%Ak}Vk_$&rkdjFLDdxsuV6F_JvVSV_KQoWvy=FDX!V z^NXRZXxUc1rBE@-A5c%HR-LpjLAuA#+Fq!%wogD2CSnpMV+y8X8m40gW?~kK;YJBc Nm7VRg6?KPR{SV@U+!X)- delta 1487 zcmYM!cT~+`7{KxSt6SZo`rX7$iCfnUnQ6#~?7cUUy=OKNg$P|_yY^05*UsL1@5my8HrA_yo?5o#=V~A|5?JQ{r5C-C+Rb^CVLNq#y=`P zwd(>`TaAy4IZSP9Zmfoy7pablV$M`2nzPifm`J@fQm-t1lcuDEE7`6N&N`DuRnn6j zR2yHbTZC?>5|^&Gfi1MKgFPIegCm@f13BRg7q~)&9&X45cjQJM7~p}t@Prrg!5jHe z07m%07bX-$ArwXt6h$%kp*TvQB>YhdrBMcDQ4Zx1fC>mi5P}hciU>s|R7Mq4MHs4~ zI>J!{HBk$-Q3rKV5B1Ri4bcdV(F9G=49(F3Ezt_C(FSeN4(-ta9nlF9=!`CiL|1e} zcl1C{^g?g+L0|Mke+pfzIEhm@jWallb2yI+ zxQI)*j4QZ`Yq*XZxQSc1jXSuDd$^BuWFQj{@DPvi7*FsN&+r^C@Di`^8gK9xS$K!{ z_<)c2gwObbulR=V_<^7Jh2O}IPuD9mA+eFzO0*I?iM_-@qLVmEoFq9UIVH{#7m2Gx zmHhqGO{QEDcS&wZ9*IHXA;~N8lz2(#Wh7;lG&Y736_b>h^*PpRjL^NblZI#$Eaj90OL+vK0s;|)V1%F| VLQx5oQ3X{IhH9v;BwNB2^$%~Pg?Rt~