Add command to generate mod_cell_counts.json
So that I can display cell edit counts in mod lists efficiently.
This commit is contained in:
26
src/commands/dump_mod_cell_counts.rs
Normal file
26
src/commands/dump_mod_cell_counts.rs
Normal file
@@ -0,0 +1,26 @@
|
||||
use anyhow::Result;
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
|
||||
use crate::models::game_mod;
|
||||
|
||||
pub async fn dump_mod_cell_counts(pool: &sqlx::Pool<sqlx::Postgres>, path: &str) -> Result<()> {
|
||||
let page_size = 100;
|
||||
let mut last_id = None;
|
||||
let mut counts = HashMap::new();
|
||||
loop {
|
||||
let mod_cell_counts =
|
||||
game_mod::batched_get_cell_counts(&pool, page_size, last_id, "Skyrim.esm", 1).await?;
|
||||
if mod_cell_counts.is_empty() {
|
||||
break;
|
||||
}
|
||||
for mod_cell_count in mod_cell_counts {
|
||||
counts.insert(mod_cell_count.nexus_mod_id, mod_cell_count.cells);
|
||||
last_id = Some(mod_cell_count.nexus_mod_id);
|
||||
}
|
||||
}
|
||||
let mut file = File::create(path)?;
|
||||
write!(file, "{}", serde_json::to_string(&counts)?)?;
|
||||
return Ok(());
|
||||
}
|
||||
@@ -2,6 +2,7 @@ pub mod backfills;
|
||||
pub mod download_tiles;
|
||||
pub mod dump_cell_data;
|
||||
pub mod dump_cell_edit_counts;
|
||||
pub mod dump_mod_cell_counts;
|
||||
pub mod dump_mod_data;
|
||||
pub mod dump_mod_search_index;
|
||||
pub mod dump_plugin_data;
|
||||
@@ -10,6 +11,7 @@ pub mod update;
|
||||
pub use download_tiles::download_tiles;
|
||||
pub use dump_cell_data::dump_cell_data;
|
||||
pub use dump_cell_edit_counts::dump_cell_edit_counts;
|
||||
pub use dump_mod_cell_counts::dump_mod_cell_counts;
|
||||
pub use dump_mod_data::dump_mod_data;
|
||||
pub use dump_mod_search_index::dump_mod_search_index;
|
||||
pub use dump_plugin_data::dump_plugin_data;
|
||||
|
||||
Reference in New Issue
Block a user