modularize somewhat, better type docs for tables

This commit is contained in:
mehbark 2025-03-25 10:04:49 -04:00
parent d14bc6ca45
commit bcad16c911

View file

@ -21,35 +21,41 @@ fn main() -> Result<(), Box<dyn Error>> {
"
BEGIN;
CREATE TABLE mon (
name STRING,
name STRING NOT NULL,
usage REAL NOT NULL,
viability_ceiling REAL NOT NULL
);
CREATE TABLE ability (
mon STRING,
mon STRING NOT NULL,
name STRING NOT NULL,
usage REAL NOT NULL
);
CREATE TABLE move (
mon STRING,
mon STRING NOT NULL,
name STRING NOT NULL,
usage REAL NOT NULL
);
CREATE TABLE item (
mon STRING,
mon STRING NOT NULL,
name STRING NOT NULL,
usage REAL NOT NULL
);
CREATE TABLE tera (
mon STRING,
mon STRING NOT NULL,
type STRING NOT NULL,
usage REAL NOT NULL
);
CREATE TABLE team (
mon STRING,
mon STRING NOT NULL,
mate STRING NOT NULL,
usage REAL NOT NULL
);
CREATE TABLE cc (
mon STRING NOT NULL,
opp STRING NOT NULL,
percentage REAL NOT NULL,
stddev REAL NOT NULL
);
COMMIT;
",
)?;
@ -64,6 +70,12 @@ fn main() -> Result<(), Box<dyn Error>> {
stats.info.cutoff
);
insert_stats(&mut conn, &stats)?;
Ok(())
}
fn insert_stats(conn: &mut Connection, stats: &Stats) -> rusqlite::Result<()> {
for (i, (mon, data)) in stats.data.iter().enumerate() {
log::debug!("Processing mon #{i} ({mon})…");
let tx = conn.transaction()?;
@ -119,9 +131,16 @@ fn main() -> Result<(), Box<dyn Error>> {
(mon, mate, count / mon_count),
)?;
}
for (opp, (_, percentage, stddev)) in &data.checks_and_counters {
tx.execute(
"INSERT INTO cc VALUES (?1, ?2, ?3, ?4)",
(mon, opp, percentage, stddev),
)?;
}
tx.commit()?;
}
Ok(())
}