feat: default settings api (#716)

* feat: default settings api

* fix logic bug

* chore
This commit is contained in:
j2rong4cn
2025-07-14 23:41:34 +08:00
committed by GitHub
parent 750d4eb3f6
commit 2a4c546a8b
5 changed files with 95 additions and 45 deletions

View File

@ -73,7 +73,7 @@ func attachHeader(w http.ResponseWriter, file model.Obj, header http.Header) {
func GetEtag(file model.Obj) string {
hash := ""
for _, v := range file.GetHash().Export() {
if strings.Compare(v, hash) > 0 {
if v > hash {
hash = v
}
}

View File

@ -1,9 +1,11 @@
package handles
import (
"sort"
"strconv"
"strings"
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap/data"
"github.com/OpenListTeam/OpenList/v4/internal/conf"
"github.com/OpenListTeam/OpenList/v4/internal/model"
"github.com/OpenListTeam/OpenList/v4/internal/op"
@ -91,6 +93,46 @@ func ListSettings(c *gin.Context) {
common.SuccessResp(c, settings)
}
func DefaultSettings(c *gin.Context) {
groupStr := c.Query("group")
groupsStr := c.Query("groups")
settings := data.InitialSettings()
if groupsStr == "" && groupStr == "" {
for i := range settings {
(&settings[i]).Index = uint(i)
}
common.SuccessResp(c, settings)
} else {
var groupStrings []string
if groupsStr != "" {
groupStrings = strings.Split(groupsStr, ",")
} else {
groupStrings = append(groupStrings, groupStr)
}
var groups []int
for _, str := range groupStrings {
group, err := strconv.Atoi(str)
if err != nil {
common.ErrorResp(c, err, 400)
return
}
groups = append(groups, group)
}
sort.Ints(groups)
var resultItems []model.SettingItem
for _, group := range groups {
for i := range settings {
item := settings[i]
if group == item.Group {
item.Index = uint(i)
resultItems = append(resultItems, item)
}
}
}
common.SuccessResp(c, resultItems)
}
}
func DeleteSetting(c *gin.Context) {
key := c.Query("key")
if err := op.DeleteSettingItemByKey(key); err != nil {

View File

@ -140,6 +140,7 @@ func admin(g *gin.RouterGroup) {
setting.GET("/list", handles.ListSettings)
setting.POST("/save", handles.SaveSettings)
setting.POST("/delete", handles.DeleteSetting)
setting.POST("/default", handles.DefaultSettings)
setting.POST("/reset_token", handles.ResetToken)
setting.POST("/set_aria2", handles.SetAria2)
setting.POST("/set_qbit", handles.SetQbittorrent)