- 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>
36 lines
837 B
Go
36 lines
837 B
Go
package session
|
|
|
|
import (
|
|
usermodel "honoka-chan/internal/model/user"
|
|
)
|
|
|
|
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 err != nil {
|
|
return false, nil, err
|
|
}
|
|
|
|
return has, &deckData, nil
|
|
}
|
|
|
|
func (ss *Session) GetUserDeckUnit(deckID int) []usermodel.UserDeckUnit {
|
|
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").
|
|
Where("user_deck_id = ?", deckData.ID).Find(&unitData)
|
|
if ss.CheckErr(err) {
|
|
return []usermodel.UserDeckUnit{}
|
|
}
|
|
|
|
return unitData
|
|
}
|