From d398cfe84e71ea2e0332d4fd353a041a861e7068 Mon Sep 17 00:00:00 2001 From: Ben Hall Date: Sun, 9 Feb 2025 21:35:17 +0000 Subject: [PATCH] fixes Signed-off-by: Ben Hall --- app/http/endpoints/api/export/import.go | 80 ++++++++++++++----------- 1 file changed, 46 insertions(+), 34 deletions(-) diff --git a/app/http/endpoints/api/export/import.go b/app/http/endpoints/api/export/import.go index 5679bbe..c291ade 100644 --- a/app/http/endpoints/api/export/import.go +++ b/app/http/endpoints/api/export/import.go @@ -477,6 +477,16 @@ func ImportHandler(ctx *gin.Context) { } } + log.Logger.Info("Importing mapping for forms", zap.Uint64("guild", guildId)) + for area, m := range map[string]map[int]int{"form": formIdMap} { + for sourceId, targetId := range m { + if err := dbclient.Client2.ImportMappingTable.Set(queryCtx, guildId, area, sourceId, targetId); err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + } + } + // Import form inputs log.Logger.Info("Importing form inputs", zap.Uint64("guild", guildId)) for _, input := range data.FormInputs { @@ -491,6 +501,16 @@ func ImportHandler(ctx *gin.Context) { } } + log.Logger.Info("Importing mapping for forms inputs", zap.Uint64("guild", guildId)) + for area, m := range map[string]map[int]int{"form_input": formInputIdMap} { + for sourceId, targetId := range m { + if err := dbclient.Client2.ImportMappingTable.Set(queryCtx, guildId, area, sourceId, targetId); err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + } + } + embedMap := make(map[int]int) // Import embeds @@ -521,12 +541,6 @@ func ImportHandler(ctx *gin.Context) { ctx.JSON(500, utils.ErrorJson(err)) return } - - panelTx, err := dbclient.Client.Panel.Begin(queryCtx) - if err != nil { - ctx.JSON(500, utils.ErrorJson(err)) - return - } panelCount := len(existingPanels) // Import Panels @@ -556,7 +570,7 @@ func ImportHandler(ctx *gin.Context) { // TODO: Fix this permanently panel.MessageId = panel.MessageId - 1 - panelId, err := dbclient.Client.Panel.CreateWithTx(queryCtx, panelTx, panel) + panelId, err := dbclient.Client.Panel.Create(queryCtx, panel) if err != nil { fmt.Println(err) ctx.JSON(500, utils.ErrorJson(err)) @@ -570,10 +584,20 @@ func ImportHandler(ctx *gin.Context) { } } + log.Logger.Info("Importing mapping for panels", zap.Uint64("guild", guildId)) + for area, m := range map[string]map[int]int{"panel": panelIdMap} { + for sourceId, targetId := range m { + if err := dbclient.Client2.ImportMappingTable.Set(queryCtx, guildId, area, sourceId, targetId); err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + } + } + // Import Panel Access Control Rules log.Logger.Info("Importing panel access control rules", zap.Uint64("guild", guildId)) for panelId, rules := range data.PanelAccessControlRules { - if err := dbclient.Client.PanelAccessControlRules.ReplaceWithTx(queryCtx, panelTx, panelIdMap[panelId], rules); err != nil { + if err := dbclient.Client.PanelAccessControlRules.Replace(queryCtx, panelIdMap[panelId], rules); err != nil { ctx.JSON(500, utils.ErrorJson(err)) return } @@ -582,7 +606,7 @@ func ImportHandler(ctx *gin.Context) { // Import Panel Mention User log.Logger.Info("Importing panel mention user", zap.Uint64("guild", guildId)) for panelId, shouldMention := range data.PanelMentionUser { - if err := dbclient.Client.PanelUserMention.SetWithTx(queryCtx, panelTx, panelIdMap[panelId], shouldMention); err != nil { + if err := dbclient.Client.PanelUserMention.Set(queryCtx, panelIdMap[panelId], shouldMention); err != nil { ctx.JSON(500, utils.ErrorJson(err)) return } @@ -591,7 +615,7 @@ func ImportHandler(ctx *gin.Context) { // Import Panel Role Mentions log.Logger.Info("Importing panel role mentions", zap.Uint64("guild", guildId)) for panelId, roles := range data.PanelRoleMentions { - if err := dbclient.Client.PanelRoleMentions.ReplaceWithTx(queryCtx, panelTx, panelIdMap[panelId], roles); err != nil { + if err := dbclient.Client.PanelRoleMentions.Replace(queryCtx, panelIdMap[panelId], roles); err != nil { ctx.JSON(500, utils.ErrorJson(err)) return } @@ -605,17 +629,12 @@ func ImportHandler(ctx *gin.Context) { teamsToAdd = append(teamsToAdd, supportTeamIdMap[team]) } - if err := dbclient.Client.PanelTeams.ReplaceWithTx(queryCtx, panelTx, panelIdMap[panelId], teamsToAdd); err != nil { + if err := dbclient.Client.PanelTeams.Replace(queryCtx, panelIdMap[panelId], teamsToAdd); err != nil { ctx.JSON(500, utils.ErrorJson(err)) return } } - if err := panelTx.Commit(queryCtx); err != nil { - ctx.JSON(500, utils.ErrorJson(err)) - return - } - // Import Multi panels log.Logger.Info("Importing multi panels", zap.Uint64("guild", guildId)) multiPanelIdMap := make(map[int]int) @@ -695,6 +714,17 @@ func ImportHandler(ctx *gin.Context) { return } + // Update the mapping + log.Logger.Info("Importing mapping for tickets", zap.Uint64("guild", guildId)) + for area, m := range map[string]map[int]int{"ticket": ticketIdMap} { + for sourceId, targetId := range m { + if err := dbclient.Client2.ImportMappingTable.Set(queryCtx, guildId, area, sourceId, targetId); err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + } + } + ticketsExtrasGroup, _ := errgroup.WithContext(queryCtx) ticketsExtrasGroup.Go(func() (err error) { @@ -823,23 +853,5 @@ func ImportHandler(ctx *gin.Context) { } - // Imported successfully, update the import mapping - newMapping := make(map[string]map[int]int) - newMapping["ticket"] = ticketIdMap - newMapping["form"] = formIdMap - newMapping["form_input"] = formInputIdMap - newMapping["panel"] = panelIdMap - - // Update the mapping - log.Logger.Info("Importing mapping", zap.Uint64("guild", guildId)) - for area, m := range newMapping { - for sourceId, targetId := range m { - if err := dbclient.Client2.ImportMappingTable.Set(queryCtx, guildId, area, sourceId, targetId); err != nil { - ctx.JSON(500, utils.ErrorJson(err)) - return - } - } - } - ctx.JSON(200, utils.SuccessResponse) }