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.

object.go 1.7 kB

2 years ago
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package services
  2. import (
  3. "gitlink.org.cn/cloudream/common/consts/errorcode"
  4. "gitlink.org.cn/cloudream/common/pkgs/logger"
  5. "gitlink.org.cn/cloudream/common/pkgs/mq"
  6. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  7. )
  8. func (svc *Service) GetPackageObjects(msg *coormq.GetPackageObjects) (*coormq.GetPackageObjectsResp, *mq.CodeMessage) {
  9. // TODO 检查用户是否有权限
  10. objs, err := svc.db.Object().GetPackageObjects(svc.db.SQLCtx(), msg.PackageID)
  11. if err != nil {
  12. logger.WithField("PackageID", msg.PackageID).
  13. Warnf("get package objects: %s", err.Error())
  14. return nil, mq.Failed(errorcode.OperationFailed, "get package objects failed")
  15. }
  16. return mq.ReplyOK(coormq.NewGetPackageObjectsResp(objs))
  17. }
  18. func (svc *Service) GetPackageObjectDetails(msg *coormq.GetPackageObjectDetails) (*coormq.GetPackageObjectDetailsResp, *mq.CodeMessage) {
  19. data, err := svc.db.ObjectBlock().GetPackageBlockDetails(svc.db.SQLCtx(), msg.PackageID)
  20. if err != nil {
  21. logger.WithField("PackageID", msg.PackageID).
  22. Warnf("getting package block details: %s", err.Error())
  23. return nil, mq.Failed(errorcode.OperationFailed, "get package object block details failed")
  24. }
  25. return mq.ReplyOK(coormq.NewGetPackageObjectDetailsResp(data))
  26. }
  27. func (svc *Service) ChangeObjectRedundancy(msg *coormq.ChangeObjectRedundancy) (*coormq.ChangeObjectRedundancyResp, *mq.CodeMessage) {
  28. err := svc.db.Object().BatchUpdateRedundancy(svc.db.SQLCtx(), msg.Entries)
  29. if err != nil {
  30. logger.Warnf("batch updating redundancy: %s", err.Error())
  31. return nil, mq.Failed(errorcode.OperationFailed, "batch update redundancy failed")
  32. }
  33. return mq.ReplyOK(coormq.RespChangeObjectRedundancy())
  34. }

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