add deserializing

This commit is contained in:
oliver 2024-07-29 15:00:10 -06:00
parent 9492f378d3
commit 8e53f2a234

View File

@ -7,12 +7,14 @@ use serde::Serialize;
use tokio::time::Instant; use tokio::time::Instant;
use tracing::{debug, error, info, trace}; use tracing::{debug, error, info, trace};
#[derive(Serialize)] #[derive(Serialize, Deserialize)]
struct Channel { struct Channel {
this: GuildChannel, this: GuildChannel,
#[serde(skip_serializing_if = "Vec::is_empty")] #[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default)]
children: Vec<Channel>, children: Vec<Channel>,
#[serde(skip_serializing_if = "Vec::is_empty")] #[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default)]
messages: Vec<Message>, messages: Vec<Message>,
} }
@ -27,12 +29,16 @@ impl Channel {
} }
} }
#[derive(Serialize)] #[derive(Serialize, Deserialize)]
struct Server { struct Server {
#[serde(default)]
name: String,
channels: Vec<Channel>, channels: Vec<Channel>,
#[serde(skip_serializing_if = "Vec::is_empty")] #[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default)]
orphanage: Vec<GuildChannel>, orphanage: Vec<GuildChannel>,
#[serde(skip_serializing)] #[serde(skip_serializing)]
#[serde(default)]
needs_clean: bool, needs_clean: bool,
} }
@ -258,6 +264,13 @@ pub async fn scrape_all(ctx: Context<'_>, pretty_print: bool) -> Result<(), Erro
Ok(()) Ok(())
} }
pub fn from_json() {
let data = fs::read_to_string("server.json").unwrap();
let server: Server = serde_json::from_str(&data).unwrap();
black_box(server);
}
/// Get server's topology (and runs clean) /// Get server's topology (and runs clean)
async fn index(map: HashMap<ChannelId, GuildChannel>) -> Server { async fn index(map: HashMap<ChannelId, GuildChannel>) -> Server {
let mut server = Server::new(); let mut server = Server::new();