Skip to content

Commit 1b549ba

Browse files
Added functions for storing, retrieving, and deleting tokens from Redis cache.
1 parent a5a1ceb commit 1b549ba

1 file changed

Lines changed: 32 additions & 3 deletions

File tree

pkg/utils/tokenCache.go

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ var (
1313
Ctx = context.Background()
1414
)
1515

16-
// InitTokenCache initializes a separate Redis client for token cache
1716
func InitTokenCache() {
1817
redisHost := os.Getenv("REDIS_HOST")
1918
if redisHost == "" {
@@ -27,11 +26,41 @@ func InitTokenCache() {
2726

2827
TokenCache = redis.NewClient(&redis.Options{
2928
Addr: fmt.Sprintf("%s:%s", redisHost, redisPort),
30-
DB: 1, // Use DB 1 to keep it separate from queue DB 0
29+
DB: 1,
3130
})
3231

33-
// Test connection
3432
if err := TokenCache.Ping(Ctx).Err(); err != nil {
3533
panic(fmt.Sprintf("failed to connect to Redis token cache: %v", err))
3634
}
3735
}
36+
37+
func StoreToken(token string, submissionID string) error {
38+
if err := TokenCache.Set(Ctx, token, submissionID, 0).Err(); err != nil {
39+
return err
40+
}
41+
return TokenCache.SAdd(Ctx, fmt.Sprintf("submission_tokens:%s", submissionID), token).Err()
42+
}
43+
// get sub
44+
func GetSubmissionIDByToken(token string) (string, error) {
45+
submissionID, err := TokenCache.Get(Ctx, token).Result()
46+
if err == redis.Nil {
47+
return "", fmt.Errorf("token not found")
48+
}
49+
return submissionID, err
50+
}
51+
//can be used to delete all tokens
52+
func DeleteTokensBySubmissionID(submissionID string) error {
53+
setKey := fmt.Sprintf("submission_tokens:%s", submissionID)
54+
tokens, err := TokenCache.SMembers(Ctx, setKey).Result()
55+
if err != nil {
56+
return err
57+
}
58+
59+
if len(tokens) > 0 {
60+
if err := TokenCache.Del(Ctx, tokens...).Err(); err != nil {
61+
return err
62+
}
63+
}
64+
65+
return TokenCache.Del(Ctx, setKey).Err()
66+
}

0 commit comments

Comments
 (0)