account and meta add id

pull/548/head
微凉 2021-11-13 16:49:03 +08:00
parent 959ef620fb
commit 5f34b8ab80
5 changed files with 67 additions and 7 deletions

View File

@ -8,7 +8,8 @@ import (
) )
type Account struct { type Account struct {
Name string `json:"name" gorm:"primaryKey" binding:"required"` ID uint `json:"id" gorm:"primaryKey"`
Name string `json:"name" gorm:"unique" binding:"required"`
Index int `json:"index"` Index int `json:"index"`
Type string `json:"type"` Type string `json:"type"`
Username string `json:"username"` Username string `json:"username"`
@ -38,7 +39,15 @@ var accountsMap = map[string]Account{}
// SaveAccount save account to database // SaveAccount save account to database
func SaveAccount(account Account) error { func SaveAccount(account Account) error {
if err := conf.DB.Save(account).Error; err != nil { if err := conf.DB.Save(&account).Error; err != nil {
return err
}
RegisterAccount(account)
return nil
}
func CreateAccount(account Account) error {
if err := conf.DB.Create(&account).Error; err != nil {
return err return err
} }
RegisterAccount(account) RegisterAccount(account)

View File

@ -1,9 +1,13 @@
package model package model
import "github.com/Xhofe/alist/conf" import (
"github.com/Xhofe/alist/conf"
log "github.com/sirupsen/logrus"
)
type Meta struct { type Meta struct {
Path string `json:"path" gorm:"primaryKey" binding:"required"` ID uint `json:"id" gorm:"primaryKey"`
Path string `json:"path" gorm:"unique" binding:"required"`
Password string `json:"password"` Password string `json:"password"`
Hide string `json:"hide"` Hide string `json:"hide"`
} }
@ -19,11 +23,16 @@ func GetMetaByPath(path string) (*Meta, error) {
} }
func SaveMeta(meta Meta) error { func SaveMeta(meta Meta) error {
return conf.DB.Save(meta).Error return conf.DB.Save(&meta).Error
}
func CreateMeta(meta Meta) error {
return conf.DB.Create(&meta).Error
} }
func DeleteMeta(path string) error { func DeleteMeta(path string) error {
meta := Meta{Path: path} meta := Meta{Path: path}
log.Debugf("delete meta: %+v", meta)
return conf.DB.Delete(&meta).Error return conf.DB.Delete(&meta).Error
} }

View File

@ -17,6 +17,31 @@ func GetAccounts(c *gin.Context) {
SuccessResp(c, accounts) SuccessResp(c, accounts)
} }
func CreateAccount(c *gin.Context) {
var req model.Account
if err := c.ShouldBind(&req); err != nil {
ErrorResp(c, err, 400)
return
}
driver, ok := drivers.GetDriver(req.Type)
if !ok {
ErrorResp(c, fmt.Errorf("no [%s] driver", req.Type), 400)
return
}
now := time.Now()
req.UpdatedAt = &now
if err := model.CreateAccount(req); err != nil {
ErrorResp(c, err, 500)
} else {
err = driver.Save(&req, nil)
if err != nil {
ErrorResp(c, err, 500)
return
}
SuccessResp(c)
}
}
func SaveAccount(c *gin.Context) { func SaveAccount(c *gin.Context) {
var req model.Account var req model.Account
if err := c.ShouldBind(&req); err != nil { if err := c.ShouldBind(&req); err != nil {

View File

@ -15,6 +15,20 @@ func GetMetas(c *gin.Context) {
SuccessResp(c, metas) SuccessResp(c, metas)
} }
func CreateMeta(c *gin.Context) {
var req model.Meta
if err := c.ShouldBind(&req); err != nil {
ErrorResp(c, err, 400)
return
}
req.Path = utils.ParsePath(req.Path)
if err := model.CreateMeta(req); err != nil {
ErrorResp(c, err, 500)
} else {
SuccessResp(c)
}
}
func SaveMeta(c *gin.Context) { func SaveMeta(c *gin.Context) {
var req model.Meta var req model.Meta
if err := c.ShouldBind(&req); err != nil { if err := c.ShouldBind(&req); err != nil {
@ -34,6 +48,7 @@ func DeleteMeta(c *gin.Context) {
//path = utils.ParsePath(path) //path = utils.ParsePath(path)
if err := model.DeleteMeta(path); err != nil { if err := model.DeleteMeta(path); err != nil {
ErrorResp(c, err, 500) ErrorResp(c, err, 500)
return
} }
SuccessResp(c) SuccessResp(c)
} }

View File

@ -27,14 +27,16 @@ func InitApiRouter(r *gin.Engine) {
admin.GET("/login", Login) admin.GET("/login", Login)
admin.GET("/settings", GetSettings) admin.GET("/settings", GetSettings)
admin.POST("/settings", SaveSettings) admin.POST("/settings", SaveSettings)
admin.POST("/account", SaveAccount) admin.POST("/account/create", CreateAccount)
admin.POST("/account/save", SaveAccount)
admin.GET("/accounts", GetAccounts) admin.GET("/accounts", GetAccounts)
admin.DELETE("/account", DeleteAccount) admin.DELETE("/account", DeleteAccount)
admin.GET("/drivers", GetDrivers) admin.GET("/drivers", GetDrivers)
admin.GET("/clear_cache", ClearCache) admin.GET("/clear_cache", ClearCache)
admin.GET("/metas", GetMetas) admin.GET("/metas", GetMetas)
admin.POST("/meta", SaveMeta) admin.POST("/meta/create", CreateMeta)
admin.POST("/meta/save", SaveMeta)
admin.DELETE("/meta", DeleteMeta) admin.DELETE("/meta", DeleteMeta)
} }
Static(r) Static(r)