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.2 kB

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

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