Reduce handler request boilerplate

- Add session.Attach to reuse per-request sessions across middleware and ghome handlers
- Make Session finalize/abort paths idempotent to avoid duplicate commit or rollback work
- Move request_data parsing helper to internal/utils
- Expand ParseRequestData usage across api, download, unit, live, multiunit, and subscenario handlers
- Extract download package metadata into internal/handler/download/types.go
- Return explicit errors from selected session lookup helpers and update callers
- Make api action handlers return errors directly instead of calling ss.CheckErr in nested layers

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-06-04 03:05:32 +08:00
parent 60677fe0dd
commit e61c07a9a3
53 changed files with 220 additions and 135 deletions
+9 -6
View File
@@ -4,25 +4,28 @@ import (
usermodel "honoka-chan/internal/model/user"
)
func (ss *Session) GetUserDeck(deckID int) (bool, *usermodel.UserDeck) {
func (ss *Session) GetUserDeck(deckID int) (bool, *usermodel.UserDeck, error) {
deckData := usermodel.UserDeck{}
has, err := ss.UserEng.Table("user_deck").
Where("user_id = ? AND deck_id = ?", ss.UserID, deckID).Get(&deckData)
if ss.CheckErr(err) {
return false, nil
if err != nil {
return false, nil, err
}
return has, &deckData
return has, &deckData, nil
}
func (ss *Session) GetUserDeckUnit(deckID int) []usermodel.UserDeckUnit {
has, deckData := ss.GetUserDeck(deckID)
has, deckData, err := ss.GetUserDeck(deckID)
if ss.CheckErr(err) {
return []usermodel.UserDeckUnit{}
}
if !has {
return []usermodel.UserDeckUnit{}
}
unitData := []usermodel.UserDeckUnit{}
err := ss.UserEng.Table("user_deck_unit").
err = ss.UserEng.Table("user_deck_unit").
Where("user_deck_id = ?", deckData.ID).Find(&unitData)
if ss.CheckErr(err) {
return []usermodel.UserDeckUnit{}