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 {
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"`
Type string `json:"type"`
Username string `json:"username"`
@ -38,7 +39,15 @@ var accountsMap = map[string]Account{}
// SaveAccount save account to database
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
}
RegisterAccount(account)

View File

@ -1,9 +1,13 @@
package model
import "github.com/Xhofe/alist/conf"
import (
"github.com/Xhofe/alist/conf"
log "github.com/sirupsen/logrus"
)
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"`
Hide string `json:"hide"`
}
@ -19,11 +23,16 @@ func GetMetaByPath(path string) (*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 {
meta := Meta{Path: path}
log.Debugf("delete meta: %+v", meta)
return conf.DB.Delete(&meta).Error
}

View File

@ -17,6 +17,31 @@ func GetAccounts(c *gin.Context) {
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) {
var req model.Account
if err := c.ShouldBind(&req); err != nil {

View File

@ -15,6 +15,20 @@ func GetMetas(c *gin.Context) {
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) {
var req model.Meta
if err := c.ShouldBind(&req); err != nil {
@ -34,6 +48,7 @@ func DeleteMeta(c *gin.Context) {
//path = utils.ParsePath(path)
if err := model.DeleteMeta(path); err != nil {
ErrorResp(c, err, 500)
return
}
SuccessResp(c)
}

View File

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