/
starter.go
42 lines (35 loc) · 915 Bytes
/
starter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package redis
import (
"github.com/go-redis/redis"
"github.com/elojah/game_01/pkg/sector"
"github.com/elojah/game_01/pkg/storage"
"github.com/elojah/game_01/pkg/ulid"
)
const (
starterKey = "starter:"
)
// GetRandomStarter redis implementation.
func (s *Service) GetRandomStarter(subset sector.StarterSubset) (sector.Starter, error) {
val, err := s.SRandMember(starterKey).Result()
if err != nil {
if err != redis.Nil {
return sector.Starter{}, err
}
return sector.Starter{}, storage.ErrNotFound
}
return sector.Starter{SectorID: ulid.MustParse(val)}, nil
}
// SetStarter redis implementation.
func (s *Service) SetStarter(starter sector.Starter) error {
return s.SAdd(
starterKey,
starter.SectorID.String(),
).Err()
}
// DelStarter redis implementation.
func (s *Service) DelStarter(subset sector.StarterSubset) error {
return s.SRem(
starterKey,
subset.ID.String(),
).Err()
}