58 lines
1.3 KiB
Rust
58 lines
1.3 KiB
Rust
use chrono::{NaiveDateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
use sled::IVec;
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct Event {
|
|
/// Event name
|
|
pub event_name: String,
|
|
/// Event long description
|
|
pub event_desc: String,
|
|
/// Event location
|
|
pub event_loc: String,
|
|
/// Event organizer
|
|
pub organizer: String,
|
|
/// Event datetime
|
|
pub event_time: NaiveDateTime,
|
|
/// Event discord message id
|
|
pub message_id: String,
|
|
/// Event message thumbnail link
|
|
pub thumbnail_link: String,
|
|
}
|
|
|
|
impl Default for Event {
|
|
fn default() -> Self {
|
|
Self {
|
|
message_id: String::default(),
|
|
event_time: Utc::now().naive_utc(),
|
|
event_name: String::default(),
|
|
organizer: String::default(),
|
|
event_desc: String::default(),
|
|
event_loc: String::default(),
|
|
thumbnail_link: String::default(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Into<IVec> for &Event {
|
|
fn into(self) -> IVec {
|
|
IVec::from(serde_json::to_string(self).unwrap().as_str())
|
|
}
|
|
}
|
|
|
|
impl From<&IVec> for Event {
|
|
fn from(v: &IVec) -> Self {
|
|
let s = String::from_utf8(v.to_vec()).unwrap();
|
|
|
|
let e: Event = serde_json::from_str(s.as_str()).unwrap();
|
|
|
|
e
|
|
}
|
|
}
|
|
|
|
impl From<IVec> for Event {
|
|
fn from(v: IVec) -> Self {
|
|
Self::from(&v)
|
|
}
|
|
}
|