alist/server/account.go

58 lines
1.0 KiB
Go
Raw Normal View History

2021-10-26 22:28:37 +08:00
package server
import (
"fmt"
"github.com/Xhofe/alist/drivers"
"github.com/Xhofe/alist/model"
2021-11-13 15:53:26 +08:00
"github.com/gin-gonic/gin"
2021-10-30 17:34:34 +08:00
"time"
2021-10-26 22:28:37 +08:00
)
2021-11-13 15:53:26 +08:00
func GetAccounts(c *gin.Context) {
2021-11-03 10:37:33 +08:00
accounts, err := model.GetAccounts()
if err != nil {
2021-11-13 15:53:26 +08:00
ErrorResp(c, err, 500)
return
2021-11-03 10:37:33 +08:00
}
2021-11-13 15:53:26 +08:00
SuccessResp(c, accounts)
2021-10-26 22:28:37 +08:00
}
2021-11-13 15:53:26 +08:00
func SaveAccount(c *gin.Context) {
2021-10-26 22:28:37 +08:00
var req model.Account
2021-11-13 15:53:26 +08:00
if err := c.ShouldBind(&req); err != nil {
ErrorResp(c, err, 400)
return
2021-10-26 22:28:37 +08:00
}
driver, ok := drivers.GetDriver(req.Type)
if !ok {
2021-11-13 15:53:26 +08:00
ErrorResp(c, fmt.Errorf("no [%s] driver", req.Type), 400)
return
2021-10-26 22:28:37 +08:00
}
2021-10-27 18:59:03 +08:00
old, ok := model.GetAccount(req.Name)
2021-10-30 17:34:34 +08:00
now := time.Now()
req.UpdatedAt = &now
2021-10-26 22:28:37 +08:00
if err := model.SaveAccount(req); err != nil {
2021-11-13 15:53:26 +08:00
ErrorResp(c, err, 500)
2021-10-26 22:28:37 +08:00
} else {
2021-10-27 18:59:03 +08:00
if ok {
err = driver.Save(&req, &old)
2021-11-03 10:37:33 +08:00
} else {
2021-10-27 18:59:03 +08:00
err = driver.Save(&req, nil)
}
if err != nil {
2021-11-13 15:53:26 +08:00
ErrorResp(c, err, 500)
return
2021-10-27 18:59:03 +08:00
}
2021-11-13 15:53:26 +08:00
SuccessResp(c)
2021-10-26 22:28:37 +08:00
}
}
2021-11-13 15:53:26 +08:00
func DeleteAccount(c *gin.Context) {
name := c.Query("name")
2021-10-26 22:28:37 +08:00
if err := model.DeleteAccount(name); err != nil {
2021-11-13 15:53:26 +08:00
ErrorResp(c, err, 500)
return
2021-10-26 22:28:37 +08:00
}
2021-11-13 15:53:26 +08:00
SuccessResp(c)
2021-10-26 22:28:37 +08:00
}