You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

bucket.go 2.6 kB

2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package services
  2. import (
  3. "database/sql"
  4. "github.com/jmoiron/sqlx"
  5. "gitlink.org.cn/cloudream/common/consts/errorcode"
  6. "gitlink.org.cn/cloudream/common/pkgs/logger"
  7. "gitlink.org.cn/cloudream/common/pkgs/mq"
  8. "gitlink.org.cn/cloudream/storage/common/pkgs/db/model"
  9. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  10. )
  11. func (svc *Service) GetBucket(userID int, bucketID int) (model.Bucket, error) {
  12. // TODO
  13. panic("not implement yet")
  14. }
  15. func (svc *Service) GetUserBuckets(msg *coormq.GetUserBuckets) (*coormq.GetUserBucketsResp, *mq.CodeMessage) {
  16. buckets, err := svc.db.Bucket().GetUserBuckets(svc.db.SQLCtx(), msg.UserID)
  17. if err != nil {
  18. logger.WithField("UserID", msg.UserID).
  19. Warnf("get user buckets failed, err: %s", err.Error())
  20. return nil, mq.Failed(errorcode.OperationFailed, "get all buckets failed")
  21. }
  22. return mq.ReplyOK(coormq.NewGetUserBucketsResp(buckets))
  23. }
  24. func (svc *Service) GetBucketPackages(msg *coormq.GetBucketPackages) (*coormq.GetBucketPackagesResp, *mq.CodeMessage) {
  25. packages, err := svc.db.Package().GetBucketPackages(svc.db.SQLCtx(), msg.UserID, msg.BucketID)
  26. if err != nil {
  27. logger.WithField("UserID", msg.UserID).
  28. WithField("BucketID", msg.BucketID).
  29. Warnf("get bucket packages failed, err: %s", err.Error())
  30. return nil, mq.Failed(errorcode.OperationFailed, "get bucket packages failed")
  31. }
  32. return mq.ReplyOK(coormq.NewGetBucketPackagesResp(packages))
  33. }
  34. func (svc *Service) CreateBucket(msg *coormq.CreateBucket) (*coormq.CreateBucketResp, *mq.CodeMessage) {
  35. var bucketID int64
  36. var err error
  37. svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error {
  38. // 这里用的是外部的err
  39. bucketID, err = svc.db.Bucket().Create(tx, msg.UserID, msg.BucketName)
  40. return err
  41. })
  42. if err != nil {
  43. logger.WithField("UserID", msg.UserID).
  44. WithField("BucketName", msg.BucketName).
  45. Warnf("create bucket failed, err: %s", err.Error())
  46. return nil, mq.Failed(errorcode.OperationFailed, "create bucket failed")
  47. }
  48. return mq.ReplyOK(coormq.NewCreateBucketResp(bucketID))
  49. }
  50. func (svc *Service) DeleteBucket(msg *coormq.DeleteBucket) (*coormq.DeleteBucketResp, *mq.CodeMessage) {
  51. err := svc.db.DoTx(sql.LevelDefault, func(tx *sqlx.Tx) error {
  52. return svc.db.Bucket().Delete(tx, msg.BucketID)
  53. })
  54. if err != nil {
  55. logger.WithField("UserID", msg.UserID).
  56. WithField("BucketID", msg.BucketID).
  57. Warnf("delete bucket failed, err: %s", err.Error())
  58. return nil, mq.Failed(errorcode.OperationFailed, "delete bucket failed")
  59. }
  60. return mq.ReplyOK(coormq.NewDeleteBucketResp())
  61. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。