| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package repository
- import (
- "context"
- "encoding/json"
- "strings"
- "time"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/redis/go-redis/v9"
- )
- const imageTaskKeyPrefix = "image_task:"
- type imageTaskStore struct {
- rdb *redis.Client
- }
- func NewImageTaskStore(rdb *redis.Client) service.ImageTaskStore {
- return &imageTaskStore{rdb: rdb}
- }
- func (s *imageTaskStore) Save(ctx context.Context, task *service.ImageTaskRecord, ttl time.Duration) error {
- data, err := json.Marshal(task)
- if err != nil {
- return err
- }
- return s.rdb.Set(ctx, imageTaskKey(task.ID), data, ttl).Err()
- }
- func (s *imageTaskStore) Get(ctx context.Context, id string) (*service.ImageTaskRecord, error) {
- data, err := s.rdb.Get(ctx, imageTaskKey(id)).Bytes()
- if err != nil {
- if err == redis.Nil {
- return nil, service.ErrImageTaskNotFound
- }
- return nil, err
- }
- var task service.ImageTaskRecord
- if err := json.Unmarshal(data, &task); err != nil {
- return nil, err
- }
- return &task, nil
- }
- func imageTaskKey(id string) string {
- return imageTaskKeyPrefix + strings.TrimSpace(id)
- }
|