use std::fmt; use chrono::{DateTime, Datelike, NaiveDateTime, Timelike, Utc}; use serde::{Deserialize, Serialize}; use crate::to_animal_names; #[derive(Serialize, Deserialize)] pub struct Pasta { pub id: u64, pub content: String, pub file: String, pub created: i64, pub expiration: i64, pub pasta_type: String, } impl Pasta { pub fn id_as_animals(&self) -> String { to_animal_names(self.id) } pub fn created_as_string(&self) -> String { let date = DateTime::::from_utc(NaiveDateTime::from_timestamp(self.created, 0), Utc); format!( "{:02}-{:02} {}:{}", date.month(), date.day(), date.hour(), date.minute(), ) } pub fn expiration_as_string(&self) -> String { let date = DateTime::::from_utc(NaiveDateTime::from_timestamp(self.expiration, 0), Utc); format!( "{:02}-{:02} {}:{}", date.month(), date.day(), date.hour(), date.minute(), ) } } impl fmt::Display for Pasta { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self.content) } }