Signed-off-by: Ben Hall <ben@benh.codes>
This commit is contained in:
Ben Hall 2025-02-09 21:35:17 +00:00
parent 6774d75b2a
commit d398cfe84e

View File

@ -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)
}