mirror of
https://github.com/fluencelabs/multi-module-example
synced 2025-04-24 14:02:13 +00:00
cleanup
This commit is contained in:
parent
082cf3b6dd
commit
f87bf3d991
26
README.md
26
README.md
@ -15,32 +15,32 @@ cargo build --release --target wasm32-unknown-unknown
|
||||
|
||||
# How to run
|
||||
|
||||
To run this example you need FCE and [Redis](https://github.com/fluencelabs/redis/releases/download/0.8.0_w/redis.wasm) and [SQlite](https://github.com/fluencelabs/sqlite/releases/download/0.4.0_w/sqlite3.wasm) wasm binaries.
|
||||
To run this example you need FCE, [Redis](https://github.com/fluencelabs/redis/releases/download/0.8.0_w/redis.wasm), [SQlite](https://github.com/fluencelabs/sqlite/releases/download/0.4.0_w/sqlite3.wasm) wasm binaries.
|
||||
|
||||
Then run fce and at first load sqlite and redis and only then this example:
|
||||
|
||||
```bush
|
||||
$> Welcome to the Frank CLI:
|
||||
$> >> add redis redis.wasm
|
||||
$> module successfully registered in Frank
|
||||
$> >> add sqlite sqlite3.wasm
|
||||
$> module successfully registered in Frank
|
||||
$> >> add mm mm.wasm
|
||||
$> module successfully registered in Frank
|
||||
Welcome to the FCE CLI:
|
||||
>> add redis redis.wasm
|
||||
module successfully registered in FCE
|
||||
>> add sqlite sqlite3.wasm
|
||||
module successfully registered in FCE
|
||||
>> add mm mm.wasm
|
||||
module successfully registered in FCE
|
||||
```
|
||||
|
||||
Finally, you could execute requests inside FCE CLI:
|
||||
|
||||
```bush
|
||||
$> >> execute redis SET A 1
|
||||
>> execute mm redis SET A 1
|
||||
result: +OK
|
||||
$> >> execute redis GET A
|
||||
>> execute mm redis GET A
|
||||
result: $1
|
||||
1
|
||||
$> >> execute sqlite CREATE VIRTUAL TABLE users USING FTS5(body)
|
||||
>> execute mm sqlite CREATE VIRTUAL TABLE users USING FTS5(body)
|
||||
result: OK
|
||||
$> >> execute sqlite INSERT INTO users(body) VALUES('AB'), ('BC'), ('CD'), ('DE')
|
||||
>> execute mm sqlite INSERT INTO users(body) VALUES('AB'), ('BC'), ('CD'), ('DE')
|
||||
result: OK
|
||||
$> >> execute sqlite SELECT * FROM users WHERE users MATCH 'A* OR B*'
|
||||
>> execute mm sqlite SELECT * FROM users WHERE users MATCH 'A* OR B*'
|
||||
result: AB|BC
|
||||
```
|
||||
|
28
src/lib.rs
28
src/lib.rs
@ -1,27 +1,21 @@
|
||||
use fluence::sdk::*;
|
||||
|
||||
const REDIS_OPTION_KEYWORD: &str = "redis";
|
||||
const SQLITE_OPTION_KEYWORD: &str = "sqlite";
|
||||
|
||||
fn init() {
|
||||
logger::WasmLogger::init_with_level(log::Level::Info).unwrap();
|
||||
}
|
||||
|
||||
#[invocation_handler(init_fn = init, side_modules = (redis, sqlite))]
|
||||
fn run(arg: String) -> Vec<u8> {
|
||||
let cmd: Vec<_> = arg.split(" ").collect();
|
||||
if cmd.len() < 2 {
|
||||
return "please specify module and argument".as_bytes().to_vec();
|
||||
}
|
||||
|
||||
let arg = cmd[1..].join(" ");
|
||||
|
||||
match cmd[0] {
|
||||
"redis" => {
|
||||
log::info!("calling redis");
|
||||
redis::call(arg.as_bytes())
|
||||
},
|
||||
"sqlite" => {
|
||||
log::info!("calling sqlite");
|
||||
sqlite::call(arg.as_bytes())
|
||||
},
|
||||
_ => "unknown_command".as_bytes().to_vec(),
|
||||
if arg.starts_with(REDIS_OPTION_KEYWORD) {
|
||||
log::info!("calling redis");
|
||||
redis::call(arg[REDIS_OPTION_KEYWORD.len() + 1..].as_bytes())
|
||||
} else if arg.starts_with(SQLITE_OPTION_KEYWORD) {
|
||||
log::info!("calling sqlite");
|
||||
redis::call(arg[SQLITE_OPTION_KEYWORD.len() + 1..].as_bytes())
|
||||
} else {
|
||||
Vec::from("unknown command")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user