diff --git a/app.routes b/app.routes index 0f61c3126aece91504ea3b16b0e2d3f283564d57..0141a0ce5ffe93558d8bd40b0b7c609ca9661a3f 100644 --- a/app.routes +++ b/app.routes @@ -13,7 +13,7 @@ example() { #[route("/db")] db() { - let db = db::kv::load("test.db"); + let db = kv::load("test.db"); db.set("some.key", json::dump(#{name: "John", id: 50})); let data = json::parse(db.get("some.key")); @@ -21,6 +21,16 @@ db() { json(data) } +#[route("/redis")] +redis() { + let db = redis::connect(); + + db.set("some.key", json::dump(#{name: "John", id: 50})); + let data = json::parse(db.get("some.key")); + + json(data) +} + #[route("/mongo/list")] mongo() { let conn = mongo::connect(); @@ -44,7 +54,7 @@ mongo(name, collection) { json(#{count: list.count(), items: list}) } -#[route("/one")] +#[route("/mongo/test")] one() { let conn = mongo::connect().db("app").get("users"); let list = conn.find_one(#{firstname: "John"}); diff --git a/src/main.rs b/src/main.rs index 7832dcfc08ab617e41d34d378568be713924caf1..b5eb1f2106afdd3e5e4e7ca068ba4ccc31f47a9b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -435,8 +435,8 @@ mod redis_db { } } - #[rhai_fn(global, return_raw)] - pub fn set(redis: Redis, key: String, value: String) -> Result<(), Box> { + #[rhai_fn(global, return_raw, name = "set")] + pub fn set_string(redis: Redis, key: String, value: String) -> Result<(), Box> { let mut conn = redis.client.unwrap().get_connection().unwrap(); match conn.set::(key, value) { Err(err) => Err(format!("{}", &err).into()), @@ -444,7 +444,16 @@ mod redis_db { } } - #[rhai_fn(global)] + #[rhai_fn(global, return_raw, name = "set")] + pub fn set_i64(redis: Redis, key: String, value: i64) -> Result<(), Box> { + let mut conn = redis.client.unwrap().get_connection().unwrap(); + match conn.set::(key, value) { + Err(err) => Err(format!("{}", &err).into()), + Ok(_) => Ok(()), + } + } + + #[rhai_fn(global, name = "get")] pub fn get(redis: Redis, key: String) -> String { let mut conn = redis.client.unwrap().get_connection().unwrap(); match conn.get::(key) { @@ -542,6 +551,46 @@ mod redis_db { Err(_) => to_dynamic::>(vec![]), } } + + #[rhai_fn(global, return_raw, name = "list")] + pub fn list_all(redis: Redis) -> Result> { + let mut conn = redis.client.unwrap().get_connection().unwrap(); + + let keys = match conn.keys("*") { + Ok(data) => data, + Err(_) => vec![], + }; + + let items = keys + .into_iter() + .map(|key| { + let value: Option = conn.get(&key).unwrap(); + (key, value.unwrap_or_else(|| "".to_string())) + }) + .collect::>(); + + to_dynamic(items) + } + + #[rhai_fn(global, return_raw, name = "list")] + pub fn list_filter(redis: Redis, filter: String) -> Result> { + let mut conn = redis.client.unwrap().get_connection().unwrap(); + + let keys = match conn.keys(filter) { + Ok(data) => data, + Err(_) => vec![], + }; + + let items = keys + .into_iter() + .map(|key| { + let value: Option = conn.get(&key).unwrap(); + (key, value.unwrap_or_else(|| "".to_string())) + }) + .collect::>(); + + to_dynamic(items) + } } #[export_module]