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; BEGIN;
CREATE TABLE mon ( CREATE TABLE mon (
name STRING, name STRING NOT NULL,
usage REAL NOT NULL, usage REAL NOT NULL,
viability_ceiling REAL NOT NULL viability_ceiling REAL NOT NULL
); );
CREATE TABLE ability ( CREATE TABLE ability (
mon STRING, mon STRING NOT NULL,
name STRING NOT NULL, name STRING NOT NULL,
usage REAL NOT NULL usage REAL NOT NULL
); );
CREATE TABLE move ( CREATE TABLE move (
mon STRING, mon STRING NOT NULL,
name STRING NOT NULL, name STRING NOT NULL,
usage REAL NOT NULL usage REAL NOT NULL
); );
CREATE TABLE item ( CREATE TABLE item (
mon STRING, mon STRING NOT NULL,
name STRING NOT NULL, name STRING NOT NULL,
usage REAL NOT NULL usage REAL NOT NULL
); );
CREATE TABLE tera ( CREATE TABLE tera (
mon STRING, mon STRING NOT NULL,
type STRING NOT NULL, type STRING NOT NULL,
usage REAL NOT NULL usage REAL NOT NULL
); );
CREATE TABLE team ( CREATE TABLE team (
mon STRING, mon STRING NOT NULL,
mate STRING NOT NULL, mate STRING NOT NULL,
usage REAL 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; COMMIT;
", ",
)?; )?;
@ -64,6 +70,12 @@ fn main() -> Result<(), Box<dyn Error>> {
stats.info.cutoff 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() { for (i, (mon, data)) in stats.data.iter().enumerate() {
log::debug!("Processing mon #{i} ({mon})…"); log::debug!("Processing mon #{i} ({mon})…");
let tx = conn.transaction()?; let tx = conn.transaction()?;
@ -119,9 +131,16 @@ fn main() -> Result<(), Box<dyn Error>> {
(mon, mate, count / mon_count), (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()?; tx.commit()?;
} }
Ok(()) Ok(())
} }