|
| 1 | +#!/usr/bin/env run-cargo-script |
| 2 | +//! ```cargo |
| 3 | +//! [dependencies] |
| 4 | +//! rocket = "0.4.4" |
| 5 | +//! ``` |
1 | 6 | #![feature(proc_macro_hygiene, decl_macro)]
|
2 | 7 | #[macro_use] extern crate rocket;
|
3 | 8 |
|
4 | 9 | use std::env;
|
| 10 | +use mini_redis::{client, Result}; |
5 | 11 | use rocket::http::RawStr;
|
6 |
| -use rocket::State; |
7 |
| -use std::collections::HashMap; |
8 |
| -use std::sync::RwLock; |
9 |
| - |
10 |
| -struct Store<> { |
11 |
| - store: RwLock<HashMap<String, String>>, |
12 |
| -} |
13 | 12 |
|
14 | 13 | #[get("/store/<id>")]
|
15 |
| -fn retrieve(id: &RawStr, store: State<Store>) -> String { |
16 |
| - let _astring = "test"; |
17 |
| - let hm = store.store.read().unwrap(); |
18 |
| - format!("{}: {:?}", id, hm.get(&id.to_string())) |
| 14 | +async fn retrieve(id: &RawStr) -> Result<String> { |
| 15 | + let mut client = client::connect("127.0.0.1:6379").await?; |
| 16 | + let result = client.get(&id.to_string()).await?; |
| 17 | + Ok(format!("{}", id)) |
19 | 18 | }
|
20 | 19 |
|
21 | 20 | #[get("/store/<id>/<val>")]
|
22 |
| -fn set(id: &RawStr, val: &RawStr, store: State<Store>) -> String { |
23 |
| - let id_copy = id.to_string(); |
24 |
| - let value = val.to_string(); |
| 21 | +fn set(id: &RawStr, val: &RawStr) -> String { |
| 22 | + let value= val.to_string(); |
25 | 23 |
|
26 |
| - let mut hm = store.store.write().unwrap(); |
27 |
| - hm.insert(id_copy, value); |
28 |
| - drop(hm); |
29 |
| - let hm_read = store.store.read().unwrap(); |
30 |
| - format!("{}: {:?}", id, hm_read.get(&id.to_string())) |
| 24 | + format!("{}: {:?}", id, value) |
31 | 25 | }
|
32 | 26 |
|
33 |
| -fn main() { |
| 27 | +#[tokio::main] |
| 28 | +async fn main() -> Result<()> { |
34 | 29 | match env::var("PORT") {
|
35 | 30 | Ok(val) => env::set_var("ROCKET_PORT", val),
|
36 | 31 | Err(e) => println!("Error: {}", e),
|
37 | 32 | }
|
38 | 33 | rocket::ignite()
|
39 |
| - .manage(Store { store: RwLock::new(HashMap::new())}) |
40 | 34 | .mount("/", routes![retrieve, set])
|
41 | 35 | .launch();
|
| 36 | + Ok(()) |
42 | 37 | }
|
0 commit comments