agahnim.dev/src/domain.rs
2026-03-23 15:27:52 +01:00

44 lines
1.2 KiB
Rust

use chrono::NaiveDate;
use serde::Deserialize;
pub struct AppState {
pub mp_tracks: Vec<Track>,
pub p_tracks: Vec<Track>,
pub website_news: Vec<WebsiteArticle>,
}
impl AppState {
pub async fn try_new() -> Self {
Self {
mp_tracks: serde_json::from_str(
&std::fs::read_to_string("content/mp-tracks.json")
.expect("mp-tracks.json non trouvé"),
)
.expect("JSON invalide"),
p_tracks: serde_json::from_str(
&std::fs::read_to_string("content/p-tracks.json")
.expect("p-tracks.json non trouvé"),
)
.expect("JSON invalide"),
website_news: serde_json::from_str(
&std::fs::read_to_string("content/web-articles.json")
.expect("web-articles.json non trouvé"),
)
.expect("JSON invalide"),
}
}
}
#[derive(Deserialize)]
pub struct Track {
pub title: String,
pub artist: String,
pub src: String,
pub album: Option<String>,
}
#[derive(Deserialize)]
pub struct WebsiteArticle {
pub date: NaiveDate,
pub body: String,
}