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.

node.go 1.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package db2
  2. import (
  3. "time"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. )
  6. type HubDB struct {
  7. *DB
  8. }
  9. func (db *DB) Hub() *HubDB {
  10. return &HubDB{DB: db}
  11. }
  12. func (*HubDB) GetAllHubs(ctx SQLContext) ([]cdssdk.Hub, error) {
  13. var ret []cdssdk.Hub
  14. err := ctx.Table("Hub").Find(&ret).Error
  15. return ret, err
  16. }
  17. func (*HubDB) GetByID(ctx SQLContext, hubID cdssdk.HubID) (cdssdk.Hub, error) {
  18. var ret cdssdk.Hub
  19. err := ctx.Table("Hub").Where("HubID = ?", hubID).Find(&ret).Error
  20. return ret, err
  21. }
  22. func (*HubDB) BatchGetByID(ctx SQLContext, hubIDs []cdssdk.HubID) ([]cdssdk.Hub, error) {
  23. var ret []cdssdk.Hub
  24. err := ctx.Table("Hub").Where("HubID IN (?)", hubIDs).Find(&ret).Error
  25. return ret, err
  26. }
  27. // GetUserHubs 根据用户id查询可用hub
  28. func (*HubDB) GetUserHubs(ctx SQLContext, userID cdssdk.UserID) ([]cdssdk.Hub, error) {
  29. var hubs []cdssdk.Hub
  30. err := ctx.
  31. Table("Hub").
  32. Select("Hub.*").
  33. Joins("JOIN UserHub ON UserHub.HubID = Hub.HubID").
  34. Where("UserHub.UserID = ?", userID).
  35. Find(&hubs).Error
  36. return hubs, err
  37. }
  38. // UpdateState 更新状态,并且设置上次上报时间为现在
  39. func (*HubDB) UpdateState(ctx SQLContext, hubID cdssdk.HubID, state string) error {
  40. err := ctx.
  41. Model(&cdssdk.Hub{}).
  42. Where("HubID = ?", hubID).
  43. Updates(map[string]interface{}{
  44. "State": state,
  45. "LastReportTime": time.Now(),
  46. }).Error
  47. return err
  48. }

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