diff --git a/src/main.rs b/src/main.rs index 2fca37e..64f7a62 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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(()) }