From bcad16c911de5948e6abcc8070c82a093011d844 Mon Sep 17 00:00:00 2001
From: mehbark <terezi@pyrope.net>
Date: Tue, 25 Mar 2025 10:04:49 -0400
Subject: [PATCH] modularize somewhat, better type docs for tables

---
 src/main.rs | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

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(())
 }