Work on ensuring data consistency even for yet unknown fields
Some checks failed
/ docker (push) Has been cancelled

This commit is contained in:
Melody Becker 2025-05-28 16:52:54 +02:00
parent 7e10627618
commit bf0aaaca8f
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
12 changed files with 458 additions and 5 deletions

View file

@ -89,6 +89,9 @@ func userInbox(w http.ResponseWriter, r *http.Request) {
}
log.Debug().Str("object-type", objectType).Msg("Inbox message")
log.Trace().Bytes("body", body).Msg("Inbox raw message")
// TODO: Decide how to handle the handler failing for whatever reason
// Add object to unhandled message table and try again later?
// Discard it? And how would a handler return that it failed?
switch objectType {
case "Like":
handleLike(w, r, data)
@ -103,7 +106,17 @@ func userInbox(w http.ResponseWriter, r *http.Request) {
case "Create":
handleCreate(w, r, data)
default:
log.Warn().Str("object-type", objectType).Msg("Unknown message type")
log.Warn().
Str("object-type", objectType).
Msg("Unknown message type, storing for later processing")
err = dbgen.UnhandledMessage.Create(&models.UnhandledMessage{
ForUserId: userId,
GlobalInbox: false,
RawData: body,
})
if err != nil {
log.Error().Err(err).Msg("Failed to store unhandled message for later")
}
_ = webutils.ProblemDetailsStatusOnly(w, 500)
}
}