HypeBot/src/database/models.rs

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)
}
}