1313 Ctx = context .Background ()
1414)
1515
16- // InitTokenCache initializes a separate Redis client for token cache
1716func 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