// Copyright (c) 2025 Tethys Plex // // This file is part of Veloera. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package model import ( "fmt" "time" "veloera/common" "veloera/constant" ) func cacheSetToken(token Token) error { key := common.GenerateHMAC(token.Key) token.Clean() err := common.RedisHSetObj(fmt.Sprintf("token:%s", key), &token, time.Duration(constant.TokenCacheSeconds)*time.Second) if err != nil { return err } return nil } func cacheDeleteToken(key string) error { key = common.GenerateHMAC(key) err := common.RedisHDelObj(fmt.Sprintf("token:%s", key)) if err != nil { return err } return nil } func cacheIncrTokenQuota(key string, increment int64) error { key = common.GenerateHMAC(key) err := common.RedisHIncrBy(fmt.Sprintf("token:%s", key), constant.TokenFiledRemainQuota, increment) if err != nil { return err } return nil } func cacheDecrTokenQuota(key string, decrement int64) error { return cacheIncrTokenQuota(key, -decrement) } func cacheSetTokenField(key string, field string, value string) error { key = common.GenerateHMAC(key) err := common.RedisHSetField(fmt.Sprintf("token:%s", key), field, value) if err != nil { return err } return nil } // CacheGetTokenByKey 从缓存中获取 token,如果缓存中不存在,则从数据库中获取 func cacheGetTokenByKey(key string) (*Token, error) { hmacKey := common.GenerateHMAC(key) if !common.RedisEnabled { return nil, fmt.Errorf("redis is not enabled") } var token Token err := common.RedisHGetObj(fmt.Sprintf("token:%s", hmacKey), &token) if err != nil { return nil, err } token.Key = key return &token, nil }