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.

temp.go 1.5 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package mq
  2. import (
  3. "fmt"
  4. "gitlink.org.cn/cloudream/storage/common/pkgs/db2"
  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. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  9. stgmod "gitlink.org.cn/cloudream/storage/common/models"
  10. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  11. )
  12. func (svc *Service) GetDatabaseAll(msg *coormq.GetDatabaseAll) (*coormq.GetDatabaseAllResp, *mq.CodeMessage) {
  13. var bkts []cdssdk.Bucket
  14. var pkgs []cdssdk.Package
  15. var objs []stgmod.ObjectDetail
  16. err := svc.db2.DoTx(func(tx db2.SQLContext) error {
  17. var err error
  18. bkts, err = svc.db2.Bucket().GetUserBuckets(tx, msg.UserID)
  19. if err != nil {
  20. return fmt.Errorf("get user buckets: %w", err)
  21. }
  22. for _, bkt := range bkts {
  23. ps, err := svc.db2.Package().GetBucketPackages(tx, msg.UserID, bkt.BucketID)
  24. if err != nil {
  25. return fmt.Errorf("get bucket packages: %w", err)
  26. }
  27. pkgs = append(pkgs, ps...)
  28. }
  29. for _, pkg := range pkgs {
  30. os, err := svc.db2.Object().GetPackageObjectDetails(tx, pkg.PackageID)
  31. if err != nil {
  32. return fmt.Errorf("get package object details: %w", err)
  33. }
  34. objs = append(objs, os...)
  35. }
  36. return nil
  37. })
  38. if err != nil {
  39. logger.Warnf("batch deleting objects: %s", err.Error())
  40. return nil, mq.Failed(errorcode.OperationFailed, "batch delete objects failed")
  41. }
  42. return mq.ReplyOK(coormq.RespGetDatabaseAll(bkts, pkgs, objs))
  43. }

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