From 5302975227e9a48c1c20b0b89b170684bb10e5b6 Mon Sep 17 00:00:00 2001 From: CooCoode <5113047+CooCoode@users.noreply.github.com> Date: Sat, 4 Oct 2025 23:39:53 +0800 Subject: [PATCH 1/2] refactor: disable error handling for Metaforo proposal state updates --- internal/api/proposal/helper.go | 48 ++++++++++---------- internal_inject/proposal/proposal.service.go | 30 ++++++------ 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/internal/api/proposal/helper.go b/internal/api/proposal/helper.go index 09e45ae5..461471c4 100644 --- a/internal/api/proposal/helper.go +++ b/internal/api/proposal/helper.go @@ -981,30 +981,30 @@ func IsUserMetVoteGate(userSeepassData *sdk.SeepassResponse, proposalVoteGate *m func UpdateDbRecordsFromMetaforoProposalResponse(db *gorm.DB, dbProposalRcdId uint, isProposalInFinState bool, metaforoProposal *metaforo.ProposalResponse, mfError error) error { // Check whether update form metaforo contains error, if yes, update state to metaforo error and return - if mfError != nil { - log.Error().Msgf("get metaforo proposal error: %+v", mfError) - - // This branch is processing mf error, set the default state to UncategorizedMetaforoError - proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError - if strings.Contains(mfError.Error(), "not found") { - // Proposal not found in metaforo, change the state to DeletedFromMetaforo - proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo - } else if isProposalInFinState { - // For mf error other than not found, only update proposal not in fin state - log.Debug().Msgf("proposal %d is in fin state, skip updating proposal state to mf error", dbProposalRcdId) - return nil - } else { - // Keep the new state to be UncategorizedMetaforoError - } - - // Update proposal state into mf_error - if err = db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { - log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) - return err - } - - return nil - } + // if mfError != nil { + // log.Error().Msgf("get metaforo proposal error: %+v", mfError) + + // // This branch is processing mf error, set the default state to UncategorizedMetaforoError + // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError + // if strings.Contains(mfError.Error(), "not found") { + // // Proposal not found in metaforo, change the state to DeletedFromMetaforo + // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo + // } else if isProposalInFinState { + // // For mf error other than not found, only update proposal not in fin state + // log.Debug().Msgf("proposal %d is in fin state, skip updating proposal state to mf error", dbProposalRcdId) + // return nil + // } else { + // // Keep the new state to be UncategorizedMetaforoError + // } + + // // Update proposal state into mf_error + // if err = db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { + // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) + // return err + // } + + // return nil + // } // Save all version proposals' arweave hash if err = UpdateArweaveHashFromMetaforoProposalResponse(db, dbProposalRcdId, metaforoProposal); err != nil { diff --git a/internal_inject/proposal/proposal.service.go b/internal_inject/proposal/proposal.service.go index 0006ce98..15da9f1d 100644 --- a/internal_inject/proposal/proposal.service.go +++ b/internal_inject/proposal/proposal.service.go @@ -904,21 +904,21 @@ func (s *ProposalService) IsUserMetVoteGate(userSeepassData *sdk.SeepassResponse } func (s *ProposalService) UpdateDbRecordsFromMetaforoProposalResponse(db *gorm.DB, dbProposalRcdId uint, metaforoProposal *metaforo.ProposalResponse, mfError error) error { - // Check whether update form metaforo contains error, if yes, update state to metaforo error and return - if mfError != nil { - log.Error().Msgf("get metaforo proposal error: %+v", mfError) - proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError - if strings.Contains(mfError.Error(), "not found") { - proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo - } - - if err := db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { - log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) - return err - } - - return nil - } + // // Check whether update form metaforo contains error, if yes, update state to metaforo error and return + // if mfError != nil { + // log.Error().Msgf("get metaforo proposal error: %+v", mfError) + // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError + // if strings.Contains(mfError.Error(), "not found") { + // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo + // } + + // if err := db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { + // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) + // return err + // } + + // return nil + // } // Save all version proposals' arweave hash if err := s.UpdateArweaveHashFromMetaforoProposalResponse(db, dbProposalRcdId, metaforoProposal); err != nil { From e13a89f6c610e4e1fcbea481b29e0f2076339379 Mon Sep 17 00:00:00 2001 From: CooCoode <5113047+CooCoode@users.noreply.github.com> Date: Sat, 4 Oct 2025 23:44:21 +0800 Subject: [PATCH 2/2] refactor: simplify error handling in metaforo proposal response by returning error directly --- internal/api/proposal/helper.go | 49 ++++++++++---------- internal_inject/proposal/proposal.service.go | 29 ++++++------ 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/internal/api/proposal/helper.go b/internal/api/proposal/helper.go index 461471c4..04ad7645 100644 --- a/internal/api/proposal/helper.go +++ b/internal/api/proposal/helper.go @@ -981,30 +981,31 @@ func IsUserMetVoteGate(userSeepassData *sdk.SeepassResponse, proposalVoteGate *m func UpdateDbRecordsFromMetaforoProposalResponse(db *gorm.DB, dbProposalRcdId uint, isProposalInFinState bool, metaforoProposal *metaforo.ProposalResponse, mfError error) error { // Check whether update form metaforo contains error, if yes, update state to metaforo error and return - // if mfError != nil { - // log.Error().Msgf("get metaforo proposal error: %+v", mfError) - - // // This branch is processing mf error, set the default state to UncategorizedMetaforoError - // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError - // if strings.Contains(mfError.Error(), "not found") { - // // Proposal not found in metaforo, change the state to DeletedFromMetaforo - // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo - // } else if isProposalInFinState { - // // For mf error other than not found, only update proposal not in fin state - // log.Debug().Msgf("proposal %d is in fin state, skip updating proposal state to mf error", dbProposalRcdId) - // return nil - // } else { - // // Keep the new state to be UncategorizedMetaforoError - // } - - // // Update proposal state into mf_error - // if err = db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { - // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) - // return err - // } - - // return nil - // } + if mfError != nil { + log.Error().Msgf("get metaforo proposal error: %+v", mfError) + return mfError + + // // This branch is processing mf error, set the default state to UncategorizedMetaforoError + // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError + // if strings.Contains(mfError.Error(), "not found") { + // // Proposal not found in metaforo, change the state to DeletedFromMetaforo + // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo + // } else if isProposalInFinState { + // // For mf error other than not found, only update proposal not in fin state + // log.Debug().Msgf("proposal %d is in fin state, skip updating proposal state to mf error", dbProposalRcdId) + // return nil + // } else { + // // Keep the new state to be UncategorizedMetaforoError + // } + + // // Update proposal state into mf_error + // if err = db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { + // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) + // return err + // } + + // return nil + } // Save all version proposals' arweave hash if err = UpdateArweaveHashFromMetaforoProposalResponse(db, dbProposalRcdId, metaforoProposal); err != nil { diff --git a/internal_inject/proposal/proposal.service.go b/internal_inject/proposal/proposal.service.go index 15da9f1d..c28fd092 100644 --- a/internal_inject/proposal/proposal.service.go +++ b/internal_inject/proposal/proposal.service.go @@ -905,20 +905,21 @@ func (s *ProposalService) IsUserMetVoteGate(userSeepassData *sdk.SeepassResponse func (s *ProposalService) UpdateDbRecordsFromMetaforoProposalResponse(db *gorm.DB, dbProposalRcdId uint, metaforoProposal *metaforo.ProposalResponse, mfError error) error { // // Check whether update form metaforo contains error, if yes, update state to metaforo error and return - // if mfError != nil { - // log.Error().Msgf("get metaforo proposal error: %+v", mfError) - // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError - // if strings.Contains(mfError.Error(), "not found") { - // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo - // } - - // if err := db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { - // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) - // return err - // } - - // return nil - // } + if mfError != nil { + log.Error().Msgf("get metaforo proposal error: %+v", mfError) + return mfError + // proposalStateForMetaforoError := model.ProposalStateUncategorizedMetaforoError + // if strings.Contains(mfError.Error(), "not found") { + // proposalStateForMetaforoError = model.ProposalStateDeletedFromMetaforo + // } + + // if err := db.Model(&model.Proposal{}).Where("id = ?", dbProposalRcdId).Update("state", proposalStateForMetaforoError).Error; err != nil { + // log.Error().Msgf("update proposal %d state to deleted_by_metaforo error", dbProposalRcdId) + // return err + // } + + // return nil + } // Save all version proposals' arweave hash if err := s.UpdateArweaveHashFromMetaforoProposalResponse(db, dbProposalRcdId, metaforoProposal); err != nil {