aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs52
1 files changed, 17 insertions, 35 deletions
diff --git a/src/main.rs b/src/main.rs
index 3e12e1f..9ed4ddc 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,7 +5,7 @@ mod database;
use rocket::serde::json::Json;
use rocket::State;
use std::sync::Mutex;
-use database::types::{Message, User, Info};
+use database::types::{Message, User, Info, UID, ReceiveMessage};
struct SharedDB {
@@ -25,9 +25,9 @@ fn get_message(id: usize, db: &State<SharedDB>) -> Json<Response<Message, &'stat
}
}
#[get("/get_message_id_list/<id_start>/<id_end>")]
-fn get_message_id_list(id_start: usize, id_end: usize, db: &State<SharedDB>) -> Json<Response<Vec<usize>, &'static str>> {
+fn get_message_id_list(id_start: u64, id_end: u64, db: &State<SharedDB>) -> Json<Response<Vec<UID>, &'static str>> {
let lock = db.sdb.lock().unwrap();
- let list = lock.get_message_id_list(id_start, id_end);
+ let list = lock.get_message_id_list(id_start.into(), id_end.into());
if list.len() == 0 {
Json(Response(Err("No messages")))
@@ -36,7 +36,7 @@ fn get_message_id_list(id_start: usize, id_end: usize, db: &State<SharedDB>) ->
}
}
#[get("/get_message_id_newest")]
-fn get_message_id_newest(db: &State<SharedDB>) -> Json<Response<usize, &'static str>> {
+fn get_message_id_newest(db: &State<SharedDB>) -> Json<Response<UID, &'static str>> {
let lock = db.sdb.lock().unwrap();
match lock.get_message_newest_id() {
Some(n) => Json(Response(Ok(n))),
@@ -44,45 +44,28 @@ fn get_message_id_newest(db: &State<SharedDB>) -> Json<Response<usize, &'static
}
}
-#[get("/send_message/<user_id>/<msg>")]
-fn send_message(user_id: usize, msg: String, db: &State<SharedDB>) -> Json<Response<usize, &'static str>> {
+#[post("/send_message", format = "application/json", data = "<message>")]
+fn send_message(message: Json<ReceiveMessage>, db: &State<SharedDB>) -> Json<Response<UID, &'static str>> {
let mut lock = db.sdb.lock().unwrap();
- let user = match lock.get_user(user_id) {
- Some(n) => n,
- None => return Json(Response(Err("User not found")))
- };
- let msg = Message::new(msg, user, lock.get_next_message_id(), None);
+ let id = lock.get_next_message_id();
+ let message = message.fill(id);
- let send = lock.send_message(&msg);
+ let send = lock.send_message(&message);
Json(Response(send))
}
-#[get("/send_reply/<user_id>/<message_id>/<msg>")]
-fn send_reply(user_id: usize, message_id: usize, msg: String, db: &State<SharedDB>) -> Json<Response<usize, &'static str>> {
+#[delete("/delete_message", format = "application/json", data = "<id>")]
+fn delete_message(id: Json<UID>, db: &State<SharedDB>) -> Json<Response<&'static str, &'static str>> {
let mut lock = db.sdb.lock().unwrap();
- let user = match lock.get_user(user_id) {
- Some(n) => n,
- None => return Json(Response(Err("User not found")))
- };
- let msg = Message::new(msg, user, lock.get_next_message_id(), Some(message_id));
-
- let send = lock.send_message(&msg);
- Json(Response(send))
-}
-
-#[get("/delete_message/<id>")]
-fn delete_message(id: usize, db: &State<SharedDB>) -> Json<Response<&'static str, &'static str>> {
- let mut lock = db.sdb.lock().unwrap();
-
- Json(Response(lock.delete_message(id)))
+ Json(Response(lock.delete_message(id.0)))
}
#[get("/get_user/<id>")]
-fn get_user(id: usize, db: &State<SharedDB>) -> Json<Response<User, &'static str>> {
+fn get_user(id: u64, db: &State<SharedDB>) -> Json<Response<User, &'static str>> {
let lock = db.sdb.lock().unwrap();
- match lock.get_user(id) {
+ match lock.get_user(id.into()) {
Some(n) => Json(Response(Ok(n))),
None => Json(Response(Err("User not found")))
}
@@ -95,11 +78,11 @@ fn get_user_by_name(name: String, db: &State<SharedDB>) -> Json<Response<User, &
None => Json(Response(Err("User not found")))
}
}
-#[get("/create_user/<name>")]
-fn create_user(name: String, db: &State<SharedDB>) -> Json<Response<usize, &'static str>> {
+#[post("/create_user", format = "application/json", data = "<name>")]
+fn create_user(name: Json<String>, db: &State<SharedDB>) -> Json<Response<UID, &'static str>> {
let mut lock = db.sdb.lock().unwrap();
- Json(Response(lock.create_user(name)))
+ Json(Response(lock.create_user(name.0)))
}
#[get("/ping")]
@@ -131,7 +114,6 @@ fn rocket() -> _ {
create_user,
get_user_by_name,
get_message_id_newest,
- send_reply,
delete_message,
])
.mount("/", routes![api_index])