package store import ( "errors" "time" "git.haelnorr.com/h/oslstats/internal/db" ) type TokenCheck struct { Token *db.DiscordToken ExpiresAt time.Time } func (s *Store) NewTokenCheck(user *db.User, token *db.DiscordToken) error { if user == nil { return errors.New("user cannot be nil") } if token == nil { return errors.New("token cannot be nil") } s.tokenchecks.Store(user.ID, &TokenCheck{ Token: token, ExpiresAt: time.Now().Add(5 * time.Minute), }) return nil } func (s *Store) CheckToken(user *db.User) *db.DiscordToken { res, ok := s.tokenchecks.Load(user.ID) if !ok { return nil } check := (res).(*TokenCheck) check.ExpiresAt = time.Now().Add(5 * time.Minute) s.tokenchecks.Delete(user.ID) s.tokenchecks.Store(user.ID, &TokenCheck{ Token: check.Token, ExpiresAt: time.Now().Add(5 * time.Minute), }) return check.Token }