db.go 825 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package redis
  2. import (
  3. "context"
  4. "log"
  5. "github.com/go-redis/redis/v8"
  6. "github.com/nchursin/formtgbot/config"
  7. "github.com/nchursin/formtgbot/structs"
  8. )
  9. var rdb *redis.Client = nil
  10. func getDb() *redis.Client {
  11. if nil == rdb {
  12. rdb = redis.NewClient(&redis.Options{
  13. Addr: config.Get().Redis,
  14. Password: "", // no password set
  15. DB: 0, // use default DB
  16. })
  17. }
  18. return rdb
  19. }
  20. func Store(vacancy *structs.Vacancy) {
  21. getDb().Set(context.TODO(), vacancy.DbKey(), vacancy.ToJson(), 0)
  22. }
  23. func Pop(key string) *structs.Vacancy {
  24. log.Printf("[redis]: extractting key: %s", key)
  25. value, err := getDb().Get(context.TODO(), key).Bytes()
  26. if err != nil {
  27. panic(err)
  28. }
  29. log.Printf("[redis]: extractting key: %s", string(value))
  30. getDb().Del(context.TODO(), key)
  31. return structs.NewVacancyFromJson(value)
  32. }