redis_module_ext/
prelude.rs1use redis_module::RedisResult;
2use redis_module::logging::RedisLogLevel;
3
4use crate::RedisDataType;
5
6pub trait RedisKeyWritableExt {
7 #[allow(clippy::mut_from_ref)]
9 fn get<T: RedisDataType>(&self) -> RedisResult<Option<&mut T>>;
10 fn set<T: RedisDataType>(&self, value: T) -> RedisResult<()>;
12}
13
14impl RedisKeyWritableExt for redis_module::key::RedisKeyWritable {
15 fn get<T: RedisDataType>(&self) -> RedisResult<Option<&mut T>> {
16 let Some(ty) = T::redis_ty(std::ptr::null_mut()) else {
17 return Err(redis_module::RedisError::Str("type has not been registered"));
18 };
19
20 self.get_value(&ty)
21 }
22
23 fn set<T: RedisDataType>(&self, value: T) -> RedisResult<()> {
24 let Some(ty) = T::redis_ty(std::ptr::null_mut()) else {
25 return Err(redis_module::RedisError::Str("type has not been registered"));
26 };
27
28 self.set_value(&ty, value)
29 }
30}
31
32pub trait IoLoggingExt {
33 fn log(&mut self, level: redis_module::logging::RedisLogLevel, message: impl AsRef<str>);
34
35 fn log_warning(&mut self, message: impl AsRef<str>) {
36 self.log(RedisLogLevel::Warning, message);
37 }
38
39 fn log_debug(&mut self, message: impl AsRef<str>) {
40 self.log(RedisLogLevel::Debug, message);
41 }
42
43 fn log_notice(&mut self, message: impl AsRef<str>) {
44 self.log(RedisLogLevel::Notice, message);
45 }
46
47 fn log_verbose(&mut self, message: impl AsRef<str>) {
48 self.log(RedisLogLevel::Verbose, message);
49 }
50}