mirror of
https://github.com/pagefaultgames/rogueserver.git
synced 2025-05-23 03:16:17 +08:00
Return generic error on non-existent save
This commit is contained in:
parent
4141d13a69
commit
21209ef4a7
@ -200,7 +200,7 @@ func handleSession(w http.ResponseWriter, r *http.Request) {
|
||||
switch r.PathValue("action") {
|
||||
case "get":
|
||||
save, err := savedata.GetSession(uuid, slot)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
if errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
http.Error(w, err.Error(), http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
@ -220,7 +220,7 @@ func handleSession(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
existingSave, err := savedata.GetSession(uuid, slot)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
if err != nil && !errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
httpError(w, r, fmt.Errorf("failed to retrieve session save data: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
} else {
|
||||
@ -339,7 +339,7 @@ func handleUpdateAll(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
existingPlaytime, err := savedata.GetPlaytime(uuid)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
if err != nil && !errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
httpError(w, r, fmt.Errorf("failed to retrieve playtime: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
} else {
|
||||
@ -356,7 +356,7 @@ func handleUpdateAll(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
existingSave, err := savedata.GetSession(uuid, data.SessionSlotId)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
if err != nil && !errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
httpError(w, r, fmt.Errorf("failed to retrieve session save data: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
} else {
|
||||
@ -417,7 +417,7 @@ func handleSystem(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
save, err := savedata.GetSystem(uuid)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
if errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
http.Error(w, err.Error(), http.StatusNotFound)
|
||||
} else {
|
||||
httpError(w, r, fmt.Errorf("failed to get system save data: %s", err), http.StatusInternalServerError)
|
||||
@ -441,7 +441,7 @@ func handleSystem(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
existingPlaytime, err := savedata.GetPlaytime(uuid)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
if err != nil && !errors.Is(err, savedata.ErrSaveNotExist) {
|
||||
httpError(w, r, fmt.Errorf("failed to retrieve playtime: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
} else {
|
||||
|
@ -18,6 +18,9 @@
|
||||
package savedata
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
|
||||
"github.com/pagefaultgames/rogueserver/db"
|
||||
"github.com/pagefaultgames/rogueserver/defs"
|
||||
)
|
||||
@ -25,6 +28,10 @@ import (
|
||||
func GetSession(uuid []byte, slot int) (defs.SessionSaveData, error) {
|
||||
session, err := db.ReadSessionSaveData(uuid, slot)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
err = ErrSaveNotExist
|
||||
}
|
||||
|
||||
return session, err
|
||||
}
|
||||
|
||||
|
@ -18,21 +18,33 @@
|
||||
package savedata
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
"github.com/pagefaultgames/rogueserver/db"
|
||||
"github.com/pagefaultgames/rogueserver/defs"
|
||||
)
|
||||
|
||||
var ErrSaveNotExist = errors.New("save does not exist")
|
||||
|
||||
func GetSystem(uuid []byte) (defs.SystemSaveData, error) {
|
||||
var system defs.SystemSaveData
|
||||
var err error
|
||||
|
||||
if os.Getenv("S3_SYSTEM_BUCKET_NAME") != "" { // use S3
|
||||
system, err = db.GetSystemSaveFromS3(uuid)
|
||||
var nokey *types.NoSuchKey
|
||||
if errors.As(err, &nokey) {
|
||||
err = ErrSaveNotExist
|
||||
}
|
||||
} else { // use database
|
||||
system, err = db.ReadSystemSaveData(uuid)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
err = ErrSaveNotExist
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
return system, err
|
||||
|
Loading…
x
Reference in New Issue
Block a user