process natures and ev spreads
This commit is contained in:
parent
e87753361d
commit
9c97c3f3ed
1 changed files with 33 additions and 15 deletions
48
src/main.rs
48
src/main.rs
|
|
@ -17,7 +17,7 @@ fn main() {
|
|||
if let Err(e) = run(config) {
|
||||
log::error!("{e}");
|
||||
process::exit(1);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
fn run(
|
||||
|
|
@ -27,7 +27,10 @@ fn run(
|
|||
}: Config,
|
||||
) -> Result<(), AppError> {
|
||||
if fs::exists(&output_file)? {
|
||||
log::warn!("{output_file:?} already exists: creating the db will probably fail");
|
||||
log::warn!(
|
||||
"{} already exists: creating the db will probably fail",
|
||||
output_file.display()
|
||||
);
|
||||
}
|
||||
|
||||
// parsing the stats is slow but doing it first avoids creating empty tables
|
||||
|
|
@ -80,41 +83,47 @@ fn create_tables(conn: &mut Connection) -> rusqlite::Result<()> {
|
|||
"
|
||||
BEGIN;
|
||||
CREATE TABLE mon (
|
||||
name STRING NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
usage REAL,
|
||||
viability_ceiling REAL
|
||||
);
|
||||
CREATE TABLE ability (
|
||||
mon STRING NOT NULL,
|
||||
name STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE move (
|
||||
mon STRING NOT NULL,
|
||||
name STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE item (
|
||||
mon STRING NOT NULL,
|
||||
name STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE tera (
|
||||
mon STRING NOT NULL,
|
||||
type STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE team (
|
||||
mon STRING NOT NULL,
|
||||
mate STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
mate TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE cc (
|
||||
mon STRING NOT NULL,
|
||||
opp STRING NOT NULL,
|
||||
mon TEXT NOT NULL,
|
||||
opp TEXT NOT NULL,
|
||||
percentage REAL NOT NULL,
|
||||
stddev REAL NOT NULL
|
||||
);
|
||||
CREATE TABLE spread (
|
||||
mon TEXT NOT NULL,
|
||||
nature TEXT NOT NULL,
|
||||
evs TEXT NOT NULL,
|
||||
usage REAL NOT NULL
|
||||
);
|
||||
COMMIT;
|
||||
",
|
||||
)
|
||||
|
|
@ -195,6 +204,14 @@ fn insert_stats(conn: &mut Connection, stats: &Stats) -> rusqlite::Result<()> {
|
|||
(mon, opp, percentage, stddev),
|
||||
)?;
|
||||
}
|
||||
|
||||
for (spread, usage) in &data.spreads {
|
||||
let (nature, evs) = spread.split_once(':').unwrap();
|
||||
tx.execute(
|
||||
"INSERT INTO spread VALUES (?1, ?2, ?3, ?4)",
|
||||
(mon, nature, evs, usage / mon_count),
|
||||
)?;
|
||||
}
|
||||
}
|
||||
tx.commit()?;
|
||||
Ok(())
|
||||
|
|
@ -258,4 +275,5 @@ struct Data {
|
|||
checks_and_counters: HashMap<Box<str>, (f32, f32, f32)>,
|
||||
#[serde(rename = "usage")]
|
||||
usage: Option<f32>,
|
||||
spreads: Counts,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue