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.1 kB

2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package services
  2. import (
  3. "fmt"
  4. "gitlink.org.cn/cloudream/db/model"
  5. coormsg "gitlink.org.cn/cloudream/rabbitmq/message/coordinator"
  6. )
  7. type BucketService struct {
  8. *Service
  9. }
  10. func (svc *Service) BucketSvc() *BucketService {
  11. return &BucketService{Service: svc}
  12. }
  13. func (svc *BucketService) GetBucket(userID int, bucketID int) (model.Bucket, error) {
  14. // TODO
  15. panic("not implement yet")
  16. }
  17. func (svc *BucketService) GetUserBuckets(userID int) ([]model.Bucket, error) {
  18. resp, err := svc.coordinator.GetUserBuckets(coormsg.NewGetUserBucketsBody(userID))
  19. if err != nil {
  20. return nil, fmt.Errorf("get user buckets failed, err: %w", err)
  21. }
  22. if resp.IsFailed() {
  23. return nil, fmt.Errorf("create bucket objects failed, code: %s, message: %s", resp.ErrorCode, resp.ErrorMessage)
  24. }
  25. return resp.Body.Buckets, nil
  26. }
  27. func (svc *BucketService) GetBucketObjects(userID int, bucketID int) ([]model.Object, error) {
  28. resp, err := svc.coordinator.GetBucketObjects(coormsg.NewGetBucketObjectsBody(userID, bucketID))
  29. if err != nil {
  30. return nil, fmt.Errorf("get bucket objects failed, err: %w", err)
  31. }
  32. if resp.IsFailed() {
  33. return nil, fmt.Errorf("create bucket objects failed, code: %s, message: %s", resp.ErrorCode, resp.ErrorMessage)
  34. }
  35. return resp.Body.Objects, nil
  36. }
  37. func (svc *BucketService) CreateBucket(userID int, bucketName string) (int, error) {
  38. resp, err := svc.coordinator.CreateBucket(coormsg.NewCreateBucketBody(userID, bucketName))
  39. if err != nil {
  40. return 0, fmt.Errorf("request to coordinator failed, err: %w", err)
  41. }
  42. if resp.IsFailed() {
  43. return 0, fmt.Errorf("create bucket objects failed, code: %s, message: %s", resp.ErrorCode, resp.ErrorMessage)
  44. }
  45. return resp.Body.BucketID, nil
  46. }
  47. func (svc *BucketService) DeleteBucket(userID int, bucketID int) error {
  48. resp, err := svc.coordinator.DeleteBucket(coormsg.NewDeleteBucketBody(userID, bucketID))
  49. if err != nil {
  50. return fmt.Errorf("request to coordinator failed, err: %w", err)
  51. }
  52. if resp.IsFailed() {
  53. return fmt.Errorf("delete bucket failed, code: %s, message: %s", resp.ErrorCode, resp.ErrorMessage)
  54. }
  55. return nil
  56. }

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