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) {
|
if let Err(e) = run(config) {
|
||||||
log::error!("{e}");
|
log::error!("{e}");
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run(
|
fn run(
|
||||||
|
|
@ -27,7 +27,10 @@ fn run(
|
||||||
}: Config,
|
}: Config,
|
||||||
) -> Result<(), AppError> {
|
) -> Result<(), AppError> {
|
||||||
if fs::exists(&output_file)? {
|
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
|
// 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;
|
BEGIN;
|
||||||
CREATE TABLE mon (
|
CREATE TABLE mon (
|
||||||
name STRING NOT NULL,
|
name TEXT NOT NULL,
|
||||||
usage REAL,
|
usage REAL,
|
||||||
viability_ceiling REAL
|
viability_ceiling REAL
|
||||||
);
|
);
|
||||||
CREATE TABLE ability (
|
CREATE TABLE ability (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
name STRING NOT NULL,
|
name TEXT NOT NULL,
|
||||||
usage REAL NOT NULL
|
usage REAL NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE move (
|
CREATE TABLE move (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
name STRING NOT NULL,
|
name TEXT NOT NULL,
|
||||||
usage REAL NOT NULL
|
usage REAL NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE item (
|
CREATE TABLE item (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
name STRING NOT NULL,
|
name TEXT NOT NULL,
|
||||||
usage REAL NOT NULL
|
usage REAL NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE tera (
|
CREATE TABLE tera (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
type STRING NOT NULL,
|
type TEXT NOT NULL,
|
||||||
usage REAL NOT NULL
|
usage REAL NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE team (
|
CREATE TABLE team (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
mate STRING NOT NULL,
|
mate TEXT NOT NULL,
|
||||||
usage REAL NOT NULL
|
usage REAL NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE cc (
|
CREATE TABLE cc (
|
||||||
mon STRING NOT NULL,
|
mon TEXT NOT NULL,
|
||||||
opp STRING NOT NULL,
|
opp TEXT NOT NULL,
|
||||||
percentage REAL NOT NULL,
|
percentage REAL NOT NULL,
|
||||||
stddev 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;
|
COMMIT;
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
|
|
@ -195,6 +204,14 @@ fn insert_stats(conn: &mut Connection, stats: &Stats) -> rusqlite::Result<()> {
|
||||||
(mon, opp, percentage, stddev),
|
(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()?;
|
tx.commit()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -258,4 +275,5 @@ struct Data {
|
||||||
checks_and_counters: HashMap<Box<str>, (f32, f32, f32)>,
|
checks_and_counters: HashMap<Box<str>, (f32, f32, f32)>,
|
||||||
#[serde(rename = "usage")]
|
#[serde(rename = "usage")]
|
||||||
usage: Option<f32>,
|
usage: Option<f32>,
|
||||||
|
spreads: Counts,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue