Add different message types, and check for them

pull/5/head
~erin 2021-07-22 15:29:01 -04:00
parent a1c5fa42a7
commit 70f604e4f0
Signed by: erin
GPG Key ID: DA70E064A8C70F44
2 changed files with 20 additions and 24 deletions

View File

@ -4,7 +4,7 @@ use once_cell::sync::Lazy;
use std::sync::Mutex; use std::sync::Mutex;
use crate::file_io::db_read; use crate::file_io::db_read;
use rocket::http::{Cookie, Cookies}; use rocket::http::{Cookie, Cookies};
use crate::message::{Message, MessageInput}; use crate::message::{Message, MessageInput, MessageType};
use rocket_contrib::json::{Json, JsonValue}; use rocket_contrib::json::{Json, JsonValue};
use chrono::prelude::*; use chrono::prelude::*;
use uuid::Uuid; use uuid::Uuid;
@ -23,35 +23,23 @@ pub fn fetch_messages() -> Json<Vec<Message>> {
// Create full message object and write to file // Create full message object and write to file
fn create_message(message: Json<MessageInput>, file: &str, user: &User) -> JsonValue { fn create_message(message: Json<MessageInput>, file: &str, user: &User) -> JsonValue {
let event_type = match message.body.chars().nth(0).unwrap() {
'/' => MessageType::Command,
':' => MessageType::Emote,
_ => MessageType::Normal,
};
// create full message object // create full message object
// append message to file
// Create proper datetime format out of string
let date_split: Vec<&str> = message.date.split("-").collect();
let year: i32 = match date_split[0].trim().parse() { // extract year
Err(why) => panic!("could not extract year from given date: {}", why),
Ok(year) => year,
};
let month: u32 = match date_split[1].trim().parse() { // extract month
Err(why) => panic!("could not extract month from given date: {}", why),
Ok(month) => month,
};
let day: u32 = match date_split[2].trim().parse() { // extract day
Err(why) => panic!("could not extract day from given date: {}", why),
Ok(month) => month,
};
let date: DateTime<Utc> = Utc.ymd(year, month, day).and_hms(9, 10, 11);
let message_obj: Message = Message { let message_obj: Message = Message {
id: Uuid::new_v4(), id: Uuid::new_v4(),
user: user.name.to_owned(), user: user.name.to_owned(),
body: message.body.to_string(), body: message.body.to_string(),
created_at: date, event_type: event_type,
created_at: Utc.timestamp(1_500_000_000, 0),
}; };
info!("created mesage: {:?}", message_obj); info!("created mesage: {:?}", message_obj);
// append message to file
let mut messages = MESSAGES.lock().unwrap(); let mut messages = MESSAGES.lock().unwrap();
messages.push(message_obj.to_owned()); messages.push(message_obj.to_owned());
return json!({ return json!({

View File

@ -7,12 +7,20 @@ use uuid::Uuid;
pub struct MessageInput<'r> { pub struct MessageInput<'r> {
pub name: &'r str, pub name: &'r str,
pub body: &'r str, pub body: &'r str,
pub date: &'r str, }
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum MessageType {
Normal,
Announcement,
Emote,
Command,
} }
#[derive(Debug, Deserialize, Serialize, Clone)] #[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Message { pub struct Message {
pub id: Uuid, pub id: Uuid,
pub event_type: MessageType,
pub user: String, pub user: String,
pub body: String, pub body: String,
pub created_at: DateTime<Utc>, pub created_at: DateTime<Utc>,