Skip to content

Commit 1ede32c

Browse files
committed
Managed state
1 parent 156f632 commit 1ede32c

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/main.rs

+20-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@
33
#[macro_use]
44
extern crate rocket;
55

6+
use rocket::State;
67
use rocket_contrib::json::Json;
78
use serde::{Deserialize, Serialize};
9+
use sled_extensions::bincode::Tree;
10+
use sled_extensions::DbExt;
11+
use std::error::Error;
12+
13+
struct Database {
14+
users: Tree<User>,
15+
}
816

917
#[derive(Deserialize, Serialize, Clone)]
1018
struct User {
@@ -15,22 +23,31 @@ struct User {
1523
type EndpointResult<T> = Result<T, &'static str>;
1624

1725
#[get("/users/<username>")]
18-
fn get_user(username: String) -> EndpointResult<Json<User>> {
26+
fn get_user(db: State<Database>, username: String) -> EndpointResult<Json<User>> {
1927
todo!()
2028
}
2129

2230
#[delete("/users/<username>")]
23-
fn delete_user(username: String) -> EndpointResult<Json<User>> {
31+
fn delete_user(db: State<Database>, username: String) -> EndpointResult<Json<User>> {
2432
todo!()
2533
}
2634

2735
#[put("/users", data = "<user>")]
28-
fn put_user(user: Json<User>) -> EndpointResult<Json<User>> {
36+
fn put_user(db: State<Database>, user: Json<User>) -> EndpointResult<Json<User>> {
2937
todo!()
3038
}
3139

3240
fn main() {
41+
let db = sled_extensions::Config::default()
42+
.path("./sled_data")
43+
.open()
44+
.expect("Failed to open sled db");
3345
rocket::ignite()
46+
.manage(Database {
47+
users: db
48+
.open_bincode_tree("users")
49+
.expect("failed to open user tree"),
50+
})
3451
.mount("/api/", routes![get_user, put_user, delete_user])
3552
.launch();
3653
}

0 commit comments

Comments
 (0)