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 4.1 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package coordinator
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/mq"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. "gitlink.org.cn/cloudream/storage/common/pkgs/db/model"
  6. )
  7. type BucketService interface {
  8. GetBucketByName(msg *GetBucketByName) (*GetBucketByNameResp, *mq.CodeMessage)
  9. GetUserBuckets(msg *GetUserBuckets) (*GetUserBucketsResp, *mq.CodeMessage)
  10. GetBucketPackages(msg *GetBucketPackages) (*GetBucketPackagesResp, *mq.CodeMessage)
  11. CreateBucket(msg *CreateBucket) (*CreateBucketResp, *mq.CodeMessage)
  12. DeleteBucket(msg *DeleteBucket) (*DeleteBucketResp, *mq.CodeMessage)
  13. }
  14. // 根据桶名获取桶
  15. var _ = Register(Service.GetBucketByName)
  16. type GetBucketByName struct {
  17. mq.MessageBodyBase
  18. UserID cdssdk.UserID `json:"userID"`
  19. Name string `json:"name"`
  20. }
  21. type GetBucketByNameResp struct {
  22. mq.MessageBodyBase
  23. Bucket cdssdk.Bucket `json:"bucket"`
  24. }
  25. func ReqGetBucketByName(userID cdssdk.UserID, name string) *GetBucketByName {
  26. return &GetBucketByName{
  27. UserID: userID,
  28. Name: name,
  29. }
  30. }
  31. func RespGetBucketByName(bucket cdssdk.Bucket) *GetBucketByNameResp {
  32. return &GetBucketByNameResp{
  33. Bucket: bucket,
  34. }
  35. }
  36. func (client *Client) GetBucketByName(msg *GetBucketByName) (*GetBucketByNameResp, error) {
  37. return mq.Request(Service.GetBucketByName, client.rabbitCli, msg)
  38. }
  39. // 获取用户所有的桶
  40. var _ = Register(Service.GetUserBuckets)
  41. type GetUserBuckets struct {
  42. mq.MessageBodyBase
  43. UserID cdssdk.UserID `json:"userID"`
  44. }
  45. type GetUserBucketsResp struct {
  46. mq.MessageBodyBase
  47. Buckets []model.Bucket `json:"buckets"`
  48. }
  49. func NewGetUserBuckets(userID cdssdk.UserID) *GetUserBuckets {
  50. return &GetUserBuckets{
  51. UserID: userID,
  52. }
  53. }
  54. func NewGetUserBucketsResp(buckets []model.Bucket) *GetUserBucketsResp {
  55. return &GetUserBucketsResp{
  56. Buckets: buckets,
  57. }
  58. }
  59. func (client *Client) GetUserBuckets(msg *GetUserBuckets) (*GetUserBucketsResp, error) {
  60. return mq.Request(Service.GetUserBuckets, client.rabbitCli, msg)
  61. }
  62. // 获取桶中的所有Package
  63. var _ = Register(Service.GetBucketPackages)
  64. type GetBucketPackages struct {
  65. mq.MessageBodyBase
  66. UserID cdssdk.UserID `json:"userID"`
  67. BucketID cdssdk.BucketID `json:"bucketID"`
  68. }
  69. type GetBucketPackagesResp struct {
  70. mq.MessageBodyBase
  71. Packages []model.Package `json:"packages"`
  72. }
  73. func NewGetBucketPackages(userID cdssdk.UserID, bucketID cdssdk.BucketID) *GetBucketPackages {
  74. return &GetBucketPackages{
  75. UserID: userID,
  76. BucketID: bucketID,
  77. }
  78. }
  79. func NewGetBucketPackagesResp(packages []model.Package) *GetBucketPackagesResp {
  80. return &GetBucketPackagesResp{
  81. Packages: packages,
  82. }
  83. }
  84. func (client *Client) GetBucketPackages(msg *GetBucketPackages) (*GetBucketPackagesResp, error) {
  85. return mq.Request(Service.GetBucketPackages, client.rabbitCli, msg)
  86. }
  87. // 创建桶
  88. var _ = Register(Service.CreateBucket)
  89. type CreateBucket struct {
  90. mq.MessageBodyBase
  91. UserID cdssdk.UserID `json:"userID"`
  92. BucketName string `json:"bucketName"`
  93. }
  94. type CreateBucketResp struct {
  95. mq.MessageBodyBase
  96. Bucket cdssdk.Bucket `json:"bucket"`
  97. }
  98. func NewCreateBucket(userID cdssdk.UserID, bucketName string) *CreateBucket {
  99. return &CreateBucket{
  100. UserID: userID,
  101. BucketName: bucketName,
  102. }
  103. }
  104. func NewCreateBucketResp(bucket cdssdk.Bucket) *CreateBucketResp {
  105. return &CreateBucketResp{
  106. Bucket: bucket,
  107. }
  108. }
  109. func (client *Client) CreateBucket(msg *CreateBucket) (*CreateBucketResp, error) {
  110. return mq.Request(Service.CreateBucket, client.rabbitCli, msg)
  111. }
  112. // 删除桶
  113. var _ = Register(Service.DeleteBucket)
  114. type DeleteBucket struct {
  115. mq.MessageBodyBase
  116. UserID cdssdk.UserID `json:"userID"`
  117. BucketID cdssdk.BucketID `json:"bucketID"`
  118. }
  119. type DeleteBucketResp struct {
  120. mq.MessageBodyBase
  121. }
  122. func NewDeleteBucket(userID cdssdk.UserID, bucketID cdssdk.BucketID) *DeleteBucket {
  123. return &DeleteBucket{
  124. UserID: userID,
  125. BucketID: bucketID,
  126. }
  127. }
  128. func NewDeleteBucketResp() *DeleteBucketResp {
  129. return &DeleteBucketResp{}
  130. }
  131. func (client *Client) DeleteBucket(msg *DeleteBucket) (*DeleteBucketResp, error) {
  132. return mq.Request(Service.DeleteBucket, client.rabbitCli, msg)
  133. }

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