mirror of
https://github.com/Xevion/r2park.git
synced 2025-12-05 23:15:56 -06:00
58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-redis/redis"
|
|
)
|
|
|
|
// LocationExists checks if a location identifier is valid (as known by the cache).
|
|
// Cache rarely will change, so this is a good way to check if a location is valid.
|
|
func LocationExists(location int64) bool {
|
|
_, ok := cachedLocationsMap[uint(location)]
|
|
return ok
|
|
}
|
|
|
|
// StoreCode stores a guest code for a given location and member ID.
|
|
func StoreCode(code string, location int64, member_id int) bool {
|
|
key := fmt.Sprintf("code:%d:%d", location, member_id)
|
|
already_set := db.Exists(key).Val() == 1
|
|
db.Set(key, code, 0)
|
|
|
|
return already_set
|
|
}
|
|
|
|
// GetCode returns the guest code for a given location and member ID.
|
|
func GetCode(location int64, member_id int) (string, bool) {
|
|
key := fmt.Sprintf("code:%d:%d", location, member_id)
|
|
result := db.Get(key)
|
|
return result.Val(), result.Err() == redis.Nil
|
|
}
|
|
|
|
// RemoveCode removes a guest code for a given location and member ID.
|
|
func RemoveCode(location int64, member_id int) {
|
|
key := fmt.Sprintf("code:%d:%d", location, member_id)
|
|
db.Del(key)
|
|
}
|
|
|
|
// SetCodeRequirement sets whether or not a guest code is required for a given location.
|
|
// This acts as sort of a 'cache' to avoid testing guest code requirements every time.
|
|
func SetCodeRequirement(location int64, required bool) {
|
|
key := fmt.Sprintf("code_required:%d", location)
|
|
db.Set(key, required, 0)
|
|
}
|
|
|
|
// GetCodeRequirement returns whether or not a guest code is required for a given location.
|
|
// This uses the const values defined in types.go: GuestCodeRequired, GuestCodeNotRequired, and Unknown.
|
|
// In the case that no tests have been performed, Unknown will be returned.
|
|
func GetCodeRequirement(location int64) uint {
|
|
key := fmt.Sprintf("code_required:%d", location)
|
|
if db.Exists(key).Val() == 0 {
|
|
return Unknown
|
|
}
|
|
if db.Get(key).Val() == "true" {
|
|
return GuestCodeRequired
|
|
}
|
|
return GuestCodeNotRequired
|
|
}
|