chore: add id to resp of create storage

pull/2338/head
Noah Hsu 2022-11-13 20:17:10 +08:00
parent 6e3df9f847
commit 3b6d8987db
6 changed files with 34 additions and 13 deletions

View File

@ -39,7 +39,7 @@ func TestConnect(t *testing.T) {
func TestDown(t *testing.T) { func TestDown(t *testing.T) {
TestConnect(t) TestConnect(t)
err := op.CreateStorage(context.Background(), model.Storage{ _, err := op.CreateStorage(context.Background(), model.Storage{
ID: 0, ID: 0,
MountPath: "/", MountPath: "/",
Order: 0, Order: 0,

View File

@ -12,7 +12,7 @@ import (
) )
func initDevData() { func initDevData() {
err := op.CreateStorage(context.Background(), model.Storage{ _, err := op.CreateStorage(context.Background(), model.Storage{
MountPath: "/", MountPath: "/",
Order: 0, Order: 0,
Driver: "Local", Driver: "Local",

View File

@ -31,7 +31,7 @@ func GetStorageByVirtualPath(virtualPath string) (driver.Driver, error) {
// CreateStorage Save the storage to database so storage can get an id // CreateStorage Save the storage to database so storage can get an id
// then instantiate corresponding driver and save it in memory // then instantiate corresponding driver and save it in memory
func CreateStorage(ctx context.Context, storage model.Storage) error { func CreateStorage(ctx context.Context, storage model.Storage) (uint, error) {
storage.Modified = time.Now() storage.Modified = time.Now()
storage.MountPath = utils.StandardizePath(storage.MountPath) storage.MountPath = utils.StandardizePath(storage.MountPath)
var err error var err error
@ -39,13 +39,13 @@ func CreateStorage(ctx context.Context, storage model.Storage) error {
driverName := storage.Driver driverName := storage.Driver
driverNew, err := GetDriverNew(driverName) driverNew, err := GetDriverNew(driverName)
if err != nil { if err != nil {
return errors.WithMessage(err, "failed get driver new") return 0, errors.WithMessage(err, "failed get driver new")
} }
storageDriver := driverNew() storageDriver := driverNew()
// insert storage to database // insert storage to database
err = db.CreateStorage(&storage) err = db.CreateStorage(&storage)
if err != nil { if err != nil {
return errors.WithMessage(err, "failed create storage in database") return storage.ID, errors.WithMessage(err, "failed create storage in database")
} }
// already has an id // already has an id
err = storageDriver.Init(ctx, storage) err = storageDriver.Init(ctx, storage)
@ -53,13 +53,13 @@ func CreateStorage(ctx context.Context, storage model.Storage) error {
if err != nil { if err != nil {
storageDriver.GetStorage().SetStatus(fmt.Sprintf("%+v", err.Error())) storageDriver.GetStorage().SetStatus(fmt.Sprintf("%+v", err.Error()))
MustSaveDriverStorage(storageDriver) MustSaveDriverStorage(storageDriver)
return errors.Wrapf(err, "failed init storage but storage is already created") return storage.ID, errors.Wrapf(err, "failed init storage but storage is already created")
} else { } else {
storageDriver.GetStorage().SetStatus(WORK) storageDriver.GetStorage().SetStatus(WORK)
MustSaveDriverStorage(storageDriver) MustSaveDriverStorage(storageDriver)
} }
log.Debugf("storage %+v is created", storageDriver) log.Debugf("storage %+v is created", storageDriver)
return nil return storage.ID, nil
} }
// LoadStorage load exist storage in db to memory // LoadStorage load exist storage in db to memory

View File

@ -30,7 +30,7 @@ func TestCreateStorage(t *testing.T) {
{storage: model.Storage{Driver: "None", MountPath: "/none", Addition: `{"root_folder":"."}`}, isErr: true}, {storage: model.Storage{Driver: "None", MountPath: "/none", Addition: `{"root_folder":"."}`}, isErr: true},
} }
for _, storage := range storages { for _, storage := range storages {
err := op.CreateStorage(context.Background(), storage.storage) _, err := op.CreateStorage(context.Background(), storage.storage)
if err != nil { if err != nil {
if !storage.isErr { if !storage.isErr {
t.Errorf("failed to create storage: %+v", err) t.Errorf("failed to create storage: %+v", err)
@ -77,7 +77,7 @@ func setupStorages(t *testing.T) {
{Driver: "Local", MountPath: "/a/d/e.balance", Order: 4, Addition: `{"root_folder":"."}`}, {Driver: "Local", MountPath: "/a/d/e.balance", Order: 4, Addition: `{"root_folder":"."}`},
} }
for _, storage := range storages { for _, storage := range storages {
err := op.CreateStorage(context.Background(), storage) _, err := op.CreateStorage(context.Background(), storage)
if err != nil { if err != nil {
t.Fatalf("failed to create storage: %+v", err) t.Fatalf("failed to create storage: %+v", err)
} }

View File

@ -21,6 +21,23 @@ func hidePrivacy(msg string) string {
// ErrorResp is used to return error response // ErrorResp is used to return error response
// @param l: if true, log error // @param l: if true, log error
func ErrorResp(c *gin.Context, err error, code int, l ...bool) { func ErrorResp(c *gin.Context, err error, code int, l ...bool) {
ErrorWithDataResp(c, err, code, nil, l...)
//if len(l) > 0 && l[0] {
// if flags.Debug || flags.Dev {
// log.Errorf("%+v", err)
// } else {
// log.Errorf("%v", err)
// }
//}
//c.JSON(200, Resp[interface{}]{
// Code: code,
// Message: hidePrivacy(err.Error()),
// Data: nil,
//})
//c.Abort()
}
func ErrorWithDataResp(c *gin.Context, err error, code int, data interface{}, l ...bool) {
if len(l) > 0 && l[0] { if len(l) > 0 && l[0] {
if flags.Debug || flags.Dev { if flags.Debug || flags.Dev {
log.Errorf("%+v", err) log.Errorf("%+v", err)
@ -31,7 +48,7 @@ func ErrorResp(c *gin.Context, err error, code int, l ...bool) {
c.JSON(200, Resp[interface{}]{ c.JSON(200, Resp[interface{}]{
Code: code, Code: code,
Message: hidePrivacy(err.Error()), Message: hidePrivacy(err.Error()),
Data: nil, Data: data,
}) })
c.Abort() c.Abort()
} }

View File

@ -36,10 +36,14 @@ func CreateStorage(c *gin.Context) {
common.ErrorResp(c, err, 400) common.ErrorResp(c, err, 400)
return return
} }
if err := op.CreateStorage(c, req); err != nil { if id, err := op.CreateStorage(c, req); err != nil {
common.ErrorResp(c, err, 500, true) common.ErrorWithDataResp(c, err, 500, gin.H{
"id": id,
}, true)
} else { } else {
common.SuccessResp(c) common.SuccessResp(c, gin.H{
"id": id,
})
} }
} }