您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

78 行
2.0 KiB

  1. package presenseredis
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/AFASystems/presence/internal/pkg/model"
  7. "github.com/redis/go-redis/v9"
  8. )
  9. func LoadBeaconsList(client *redis.Client, ctx context.Context) map[string]model.Beacon {
  10. beaconsList, err := client.Get(ctx, "beaconsList").Result()
  11. beaconsMap := make(map[string]model.Beacon)
  12. if err == redis.Nil {
  13. fmt.Println("no beacons list, starting empty")
  14. } else if err != nil {
  15. fmt.Println("no connection to redis")
  16. } else {
  17. json.Unmarshal([]byte(beaconsList), &beaconsMap)
  18. }
  19. return beaconsMap
  20. }
  21. func LoadLatestList(client *redis.Client, ctx context.Context) map[string]model.Beacon {
  22. latestList, err := client.Get(ctx, "latestList").Result()
  23. latestMap := make(map[string]model.Beacon)
  24. if err == redis.Nil {
  25. fmt.Println("no beacons list, starting empty")
  26. } else if err != nil {
  27. fmt.Println("no connection to redis")
  28. } else {
  29. json.Unmarshal([]byte(latestList), &latestMap)
  30. }
  31. return latestMap
  32. }
  33. func LoadSettings(client *redis.Client, ctx context.Context) model.Settings {
  34. redisSettings, err := client.Get(ctx, "settings").Result()
  35. var settings model.Settings
  36. if err == redis.Nil {
  37. fmt.Println("no beacons list, starting empty")
  38. } else if err != nil {
  39. fmt.Println("no connection to redis")
  40. } else {
  41. json.Unmarshal([]byte(redisSettings), &settings)
  42. }
  43. return settings
  44. }
  45. func SaveBeaconsList(appCtx *model.AppContext, client *redis.Client, ctx context.Context) {
  46. appCtx.Beacons.Lock.Lock()
  47. data, _ := json.Marshal(appCtx.Beacons.Beacons)
  48. appCtx.Beacons.Lock.Unlock()
  49. err := client.Set(ctx, "beaconsList", data, 0).Err()
  50. if err != nil {
  51. fmt.Println("error in saving to redis: ", err)
  52. }
  53. }
  54. func SaveLatestList(appCtx *model.AppContext, client *redis.Client, ctx context.Context) {
  55. appCtx.LatestList.Lock.Lock()
  56. data, _ := json.Marshal(appCtx.LatestList.LatestList)
  57. appCtx.LatestList.Lock.Unlock()
  58. err := client.Set(ctx, "latestList", data, 0).Err()
  59. if err != nil {
  60. fmt.Println("error in saving to redis: ", err)
  61. }
  62. }