forked from free-lancers/electricity_bill_calc_service
		
	enhance(session):基本完成用于控制会话存储的函数。
This commit is contained in:
		
							
								
								
									
										32
									
								
								cache/session.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								cache/session.go
									
									
									
									
										vendored
									
									
								
							| @@ -1,42 +1,22 @@ | ||||
| package cache | ||||
|  | ||||
| import ( | ||||
| 	"electricity_bill_calc/global" | ||||
| 	"electricity_bill_calc/model" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/go-redis/redis/v8" | ||||
| 	"github.com/vmihailenco/msgpack/v5" | ||||
| ) | ||||
|  | ||||
| func CacheSession(session *model.Session) error { | ||||
| 	key := fmt.Sprintf("session:%s", session.Token) | ||||
| 	serializedSession, err := msgpack.Marshal(session) | ||||
|  | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	validRemains := time.Until(session.ExpiresAt) | ||||
| 	cmd := global.RedisConn.SetNX(global.Ctx, key, serializedSession, validRemains) | ||||
| 	return cmd.Err() | ||||
| 	return Cache(key, session, 2*time.Hour) | ||||
| } | ||||
|  | ||||
| func RetreiveSession(token string) (*model.Session, error) { | ||||
| 	key := fmt.Sprintf("session:%s", token) | ||||
| 	result, err := global.RedisConn.Get(global.Ctx, key).Result() | ||||
| 	if err != nil { | ||||
| 		if err == redis.Nil { | ||||
| 			return nil, nil | ||||
| 		} else { | ||||
| 			return nil, err | ||||
| 	return Retreive[model.Session](key) | ||||
| } | ||||
| 	} | ||||
| 	session := &model.Session{} | ||||
| 	err = msgpack.Unmarshal([]byte(result), session) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return session, nil | ||||
|  | ||||
| func HasSession(token string) (bool, error) { | ||||
| 	key := fmt.Sprintf("session:%s", token) | ||||
| 	return Exists(key) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user