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.

cache.go 2.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package mq
  2. import (
  3. "fmt"
  4. "gitlink.org.cn/cloudream/storage2/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. coormq "gitlink.org.cn/cloudream/storage2/common/pkgs/mq/coordinator"
  9. )
  10. func (svc *Service) CachePackageMoved(msg *coormq.CachePackageMoved) (*coormq.CachePackageMovedResp, *mq.CodeMessage) {
  11. err := svc.db2.DoTx(func(tx db2.SQLContext) error {
  12. _, err := svc.db2.Package().GetByID(tx, msg.PackageID)
  13. if err != nil {
  14. return fmt.Errorf("getting package by id: %w", err)
  15. }
  16. _, err = svc.db2.Storage().GetByID(tx, msg.StorageID)
  17. if err != nil {
  18. return fmt.Errorf("getting storage by id: %w", err)
  19. }
  20. err = svc.db2.PinnedObject().CreateFromPackage(tx, msg.PackageID, msg.StorageID)
  21. if err != nil {
  22. return fmt.Errorf("creating pinned objects from package: %w", err)
  23. }
  24. return nil
  25. })
  26. if err != nil {
  27. logger.WithField("PackageID", msg.PackageID).WithField("HubID", msg.StorageID).Warn(err.Error())
  28. return nil, mq.Failed(errorcode.OperationFailed, "create package pinned objects failed")
  29. }
  30. return mq.ReplyOK(coormq.NewCachePackageMovedResp())
  31. }
  32. func (svc *Service) CacheRemovePackage(msg *coormq.CacheRemovePackage) (*coormq.CacheRemovePackageResp, *mq.CodeMessage) {
  33. err := svc.db2.DoTx(func(tx db2.SQLContext) error {
  34. _, err := svc.db2.Package().GetByID(tx, msg.PackageID)
  35. if err != nil {
  36. return fmt.Errorf("getting package by id: %w", err)
  37. }
  38. _, err = svc.db2.Storage().GetByID(tx, msg.StorageID)
  39. if err != nil {
  40. return fmt.Errorf("getting storage by id: %w", err)
  41. }
  42. err = svc.db2.PinnedObject().DeleteInPackageAtStorage(tx, msg.PackageID, msg.StorageID)
  43. if err != nil {
  44. return fmt.Errorf("delete pinned objects in package at storage: %w", err)
  45. }
  46. return nil
  47. })
  48. if err != nil {
  49. logger.WithField("PackageID", msg.PackageID).WithField("HubID", msg.StorageID).Warn(err.Error())
  50. return nil, mq.Failed(errorcode.OperationFailed, "remove pinned package failed")
  51. }
  52. return mq.ReplyOK(coormq.RespCacheRemovePackage())
  53. }

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