mirror of https://github.com/Xhofe/alist
96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
![]() |
package controllers
|
||
![]() |
|
||
|
import (
|
||
|
"fmt"
|
||
![]() |
"github.com/Xhofe/alist/drivers/base"
|
||
![]() |
"github.com/Xhofe/alist/model"
|
||
![]() |
"github.com/Xhofe/alist/server/common"
|
||
![]() |
"github.com/gin-gonic/gin"
|
||
![]() |
log "github.com/sirupsen/logrus"
|
||
![]() |
"strconv"
|
||
![]() |
"time"
|
||
![]() |
)
|
||
|
|
||
![]() |
func GetAccounts(c *gin.Context) {
|
||
![]() |
accounts, err := model.GetAccounts()
|
||
|
if err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
return
|
||
![]() |
}
|
||
![]() |
common.SuccessResp(c, accounts)
|
||
![]() |
}
|
||
|
|
||
![]() |
func CreateAccount(c *gin.Context) {
|
||
|
var req model.Account
|
||
|
if err := c.ShouldBind(&req); err != nil {
|
||
![]() |
common.ErrorResp(c, err, 400)
|
||
![]() |
return
|
||
|
}
|
||
![]() |
driver, ok := base.GetDriver(req.Type)
|
||
![]() |
if !ok {
|
||
![]() |
common.ErrorResp(c, fmt.Errorf("no [%s] driver", req.Type), 400)
|
||
![]() |
return
|
||
|
}
|
||
|
now := time.Now()
|
||
|
req.UpdatedAt = &now
|
||
![]() |
if err := model.CreateAccount(&req); err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
} else {
|
||
![]() |
log.Debugf("new account: %+v", req)
|
||
![]() |
err = driver.Save(&req, nil)
|
||
|
if err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
return
|
||
|
}
|
||
![]() |
common.SuccessResp(c)
|
||
![]() |
}
|
||
|
}
|
||
|
|
||
![]() |
func SaveAccount(c *gin.Context) {
|
||
![]() |
var req model.Account
|
||
![]() |
if err := c.ShouldBind(&req); err != nil {
|
||
![]() |
common.ErrorResp(c, err, 400)
|
||
![]() |
return
|
||
![]() |
}
|
||
![]() |
driver, ok := base.GetDriver(req.Type)
|
||
![]() |
if !ok {
|
||
![]() |
common.ErrorResp(c, fmt.Errorf("no [%s] driver", req.Type), 400)
|
||
![]() |
return
|
||
![]() |
}
|
||
![]() |
old, err := model.GetAccountById(req.ID)
|
||
|
if err != nil {
|
||
![]() |
common.ErrorResp(c, err, 400)
|
||
![]() |
return
|
||
|
}
|
||
![]() |
now := time.Now()
|
||
|
req.UpdatedAt = &now
|
||
![]() |
if old.Name != req.Name {
|
||
|
model.DeleteAccountFromMap(old.Name)
|
||
|
}
|
||
![]() |
if err := model.SaveAccount(&req); err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
} else {
|
||
![]() |
log.Debugf("save account: %+v", req)
|
||
![]() |
err = driver.Save(&req, old)
|
||
![]() |
if err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
return
|
||
![]() |
}
|
||
![]() |
common.SuccessResp(c)
|
||
![]() |
}
|
||
|
}
|
||
|
|
||
![]() |
func DeleteAccount(c *gin.Context) {
|
||
![]() |
idStr := c.Query("id")
|
||
|
id, err := strconv.Atoi(idStr)
|
||
|
if err != nil {
|
||
![]() |
common.ErrorResp(c, err, 400)
|
||
![]() |
return
|
||
|
}
|
||
|
if err := model.DeleteAccount(uint(id)); err != nil {
|
||
![]() |
common.ErrorResp(c, err, 500)
|
||
![]() |
return
|
||
![]() |
}
|
||
![]() |
common.SuccessResp(c)
|
||
![]() |
}
|