Add message storage and fetching
parent
0302f816ec
commit
aef1bbd2a7
|
@ -632,6 +632,12 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.3.0"
|
||||
|
@ -679,6 +685,7 @@ dependencies = [
|
|||
"chrono",
|
||||
"env_logger",
|
||||
"log 0.4.14",
|
||||
"once_cell",
|
||||
"rocket",
|
||||
"rocket_contrib",
|
||||
"serde",
|
||||
|
|
|
@ -16,3 +16,4 @@ log = "0.4.0"
|
|||
env_logger = "0.8.4"
|
||||
chrono = { version = "0.4.11", features = ["serde"] }
|
||||
rocket_contrib = { version = "0.4.10", default-features = false, features = ["json"] }
|
||||
once_cell = "1.8.0"
|
||||
|
|
|
@ -30,8 +30,8 @@ Whenever user sends a message, client will send message & token and backend will
|
|||
- status is main thing to deal with, ok/fail/panic
|
||||
- reason is for more details, mainly just for debugging?
|
||||
- [ ] Basic messaging system
|
||||
- [ ] Finish up `chat::create_message()`
|
||||
- [ ] Create `chat::read_messages()`
|
||||
- [x] Finish up `chat::create_message()`
|
||||
- [x] Create `chat::fetch_messages()`
|
||||
- [ ] Create `chat::delete_message()`
|
||||
- [ ] Different types of message events? eg. default, announcement, command
|
||||
- [ ] Emote support?
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
http POST 'http://localhost:8000/api/message/send' name=Sarah body="meow" date=2021-07-01 token=NULL
|
17
src/chat.rs
17
src/chat.rs
|
@ -1,5 +1,7 @@
|
|||
/* Contains Rocket code for chat/message functionality */
|
||||
extern crate log;
|
||||
use once_cell::sync::Lazy;
|
||||
use std::sync::Mutex;
|
||||
use crate::file_io::read_json;
|
||||
use crate::message::{Message, MessageInput};
|
||||
use rocket_contrib::json::{Json, JsonValue};
|
||||
|
@ -7,6 +9,17 @@ use chrono::prelude::*;
|
|||
use uuid::Uuid;
|
||||
use crate::user::User;
|
||||
|
||||
static MESSAGES: Lazy<Mutex<Vec<Message>>> = Lazy::new(|| Mutex::new(Vec::new()));
|
||||
|
||||
#[get("/api/message/messages.json")]
|
||||
pub fn fetch_messages() -> Json<Vec<Message>> {
|
||||
let messages = {
|
||||
let messages = MESSAGES.lock().unwrap();
|
||||
messages.to_vec()
|
||||
};
|
||||
Json(messages)
|
||||
}
|
||||
|
||||
// Create full message object and write to file
|
||||
fn create_message(message: Json<MessageInput>, file: &str, user: &User) -> JsonValue {
|
||||
// create full message object
|
||||
|
@ -37,7 +50,9 @@ fn create_message(message: Json<MessageInput>, file: &str, user: &User) -> JsonV
|
|||
body: message.body.to_string(),
|
||||
created_at: date,
|
||||
};
|
||||
println!("{:?}", message_obj);
|
||||
info!("created mesage: {:?}", message_obj);
|
||||
let mut messages = MESSAGES.lock().unwrap();
|
||||
messages.push(message_obj.to_owned());
|
||||
return json!({
|
||||
"status": "ok",
|
||||
"reason": "message created",
|
||||
|
|
|
@ -34,7 +34,8 @@ fn main() {
|
|||
auth::change,
|
||||
auth::get_user_name,
|
||||
auth::get_user_pronouns,
|
||||
chat::send_message
|
||||
chat::send_message,
|
||||
chat::fetch_messages
|
||||
],
|
||||
)
|
||||
.attach(cors_fairing)
|
||||
|
|
|
@ -11,7 +11,7 @@ pub struct MessageInput<'r> {
|
|||
pub token: &'r str,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Deserialize, Serialize, Clone)]
|
||||
pub struct Message {
|
||||
pub id: Uuid,
|
||||
pub user: User,
|
||||
|
|
Loading…
Reference in New Issue