| @@ -1,6 +1,9 @@ | |||||
| package services | package services | ||||
| import ( | import ( | ||||
| "database/sql" | |||||
| "github.com/jmoiron/sqlx" | |||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| log "gitlink.org.cn/cloudream/common/pkg/logger" | log "gitlink.org.cn/cloudream/common/pkg/logger" | ||||
| "gitlink.org.cn/cloudream/db/model" | "gitlink.org.cn/cloudream/db/model" | ||||
| @@ -39,8 +42,13 @@ func (svc *Service) GetBucketObjects(msg *coormsg.GetBucketObjects) *coormsg.Get | |||||
| } | } | ||||
| func (svc *Service) CreateBucket(msg *coormsg.CreateBucket) *coormsg.CreateBucketResp { | func (svc *Service) CreateBucket(msg *coormsg.CreateBucket) *coormsg.CreateBucketResp { | ||||
| bucketID, err := svc.db.Bucket().Create(svc.db.SQLCtx(), msg.Body.UserID, msg.Body.BucketName) | |||||
| var bucketID int | |||||
| var err error | |||||
| svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| // 这里用的是外部的err | |||||
| bucketID, err = svc.db.Bucket().Create(tx, msg.Body.UserID, msg.Body.BucketName) | |||||
| return err | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| log.WithField("UserID", msg.Body.UserID). | log.WithField("UserID", msg.Body.UserID). | ||||
| WithField("BucketName", msg.Body.BucketName). | WithField("BucketName", msg.Body.BucketName). | ||||
| @@ -52,8 +60,9 @@ func (svc *Service) CreateBucket(msg *coormsg.CreateBucket) *coormsg.CreateBucke | |||||
| } | } | ||||
| func (svc *Service) DeleteBucket(msg *coormsg.DeleteBucket) *coormsg.DeleteBucketResp { | func (svc *Service) DeleteBucket(msg *coormsg.DeleteBucket) *coormsg.DeleteBucketResp { | ||||
| err := svc.db.Bucket().Delete(svc.db.SQLCtx(), msg.Body.BucketID) | |||||
| err := svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| return svc.db.Bucket().Delete(tx, msg.Body.BucketID) | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| log.WithField("UserID", msg.Body.UserID). | log.WithField("UserID", msg.Body.UserID). | ||||
| WithField("BucketID", msg.Body.BucketID). | WithField("BucketID", msg.Body.BucketID). | ||||
| @@ -4,6 +4,7 @@ import ( | |||||
| "database/sql" | "database/sql" | ||||
| "errors" | "errors" | ||||
| "github.com/jmoiron/sqlx" | |||||
| "github.com/samber/lo" | "github.com/samber/lo" | ||||
| "gitlink.org.cn/cloudream/common/consts" | "gitlink.org.cn/cloudream/common/consts" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| @@ -173,7 +174,10 @@ func (svc *Service) PreUploadRepObject(msg *coormsg.PreUploadRepObject) *coormsg | |||||
| } | } | ||||
| func (svc *Service) CreateRepObject(msg *coormsg.CreateRepObject) *coormsg.CreateObjectResp { | func (svc *Service) CreateRepObject(msg *coormsg.CreateRepObject) *coormsg.CreateObjectResp { | ||||
| _, err := svc.db.Object().CreateRepObject(svc.db.SQLCtx(), msg.Body.BucketID, msg.Body.ObjectName, msg.Body.FileSize, msg.Body.RepCount, msg.Body.NodeIDs, msg.Body.FileHash) | |||||
| err := svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| _, err := svc.db.Object().CreateRepObject(tx, msg.Body.BucketID, msg.Body.ObjectName, msg.Body.FileSize, msg.Body.RepCount, msg.Body.NodeIDs, msg.Body.FileHash) | |||||
| return err | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| logger.WithField("BucketName", msg.Body.BucketID). | logger.WithField("BucketName", msg.Body.BucketID). | ||||
| WithField("ObjectName", msg.Body.ObjectName). | WithField("ObjectName", msg.Body.ObjectName). | ||||
| @@ -253,7 +257,9 @@ func (svc *Service) PreUpdateRepObject(msg *coormsg.PreUpdateRepObject) *coormsg | |||||
| } | } | ||||
| func (svc *Service) UpdateRepObject(msg *coormsg.UpdateRepObject) *coormsg.UpdateRepObjectResp { | func (svc *Service) UpdateRepObject(msg *coormsg.UpdateRepObject) *coormsg.UpdateRepObjectResp { | ||||
| err := svc.db.Object().UpdateRepObject(svc.db.SQLCtx(), msg.Body.ObjectID, msg.Body.FileSize, msg.Body.NodeIDs, msg.Body.FileHash) | |||||
| err := svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| return svc.db.Object().UpdateRepObject(tx, msg.Body.ObjectID, msg.Body.FileSize, msg.Body.NodeIDs, msg.Body.FileHash) | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| logger.WithField("ObjectID", msg.Body.ObjectID). | logger.WithField("ObjectID", msg.Body.ObjectID). | ||||
| Warnf("update rep object failed, err: %s", err.Error()) | Warnf("update rep object failed, err: %s", err.Error()) | ||||
| @@ -284,7 +290,9 @@ func (svc *Service) DeleteObject(msg *coormsg.DeleteObject) *coormsg.DeleteObjec | |||||
| return ramsg.ReplyFailed[coormsg.DeleteObjectResp](errorcode.OPERATION_FAILED, "object is not available to the user") | return ramsg.ReplyFailed[coormsg.DeleteObjectResp](errorcode.OPERATION_FAILED, "object is not available to the user") | ||||
| } | } | ||||
| err = svc.db.Object().SoftDelete(svc.db.SQLCtx(), msg.Body.ObjectID) | |||||
| err = svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| return svc.db.Object().SoftDelete(tx, msg.Body.ObjectID) | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| logger.WithField("UserID", msg.Body.UserID). | logger.WithField("UserID", msg.Body.UserID). | ||||
| WithField("ObjectID", msg.Body.ObjectID). | WithField("ObjectID", msg.Body.ObjectID). | ||||
| @@ -1,6 +1,9 @@ | |||||
| package services | package services | ||||
| import ( | import ( | ||||
| "database/sql" | |||||
| "github.com/jmoiron/sqlx" | |||||
| "gitlink.org.cn/cloudream/common/consts" | "gitlink.org.cn/cloudream/common/consts" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| log "gitlink.org.cn/cloudream/common/pkg/logger" | log "gitlink.org.cn/cloudream/common/pkg/logger" | ||||
| @@ -98,7 +101,9 @@ func (svc *Service) PreMoveObjectToStorage(msg *coormsg.PreMoveObjectToStorage) | |||||
| } | } | ||||
| func (svc *Service) MoveObjectToStorage(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObjectToStorageResp { | func (svc *Service) MoveObjectToStorage(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObjectToStorageResp { | ||||
| err := svc.db.StorageObject().MoveObjectTo(svc.db.SQLCtx(), msg.Body.UserID, msg.Body.ObjectID, msg.Body.StorageID) | |||||
| err := svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error { | |||||
| return svc.db.StorageObject().MoveObjectTo(tx, msg.Body.UserID, msg.Body.ObjectID, msg.Body.StorageID) | |||||
| }) | |||||
| if err != nil { | if err != nil { | ||||
| log.WithField("UserID", msg.Body.UserID). | log.WithField("UserID", msg.Body.UserID). | ||||
| WithField("ObjectID", msg.Body.ObjectID). | WithField("ObjectID", msg.Body.ObjectID). | ||||