use rusqlite_migration::{Migrations, M};
#[must_use]
pub fn migrations() -> Migrations<'static> {
Migrations::new(vec![M::up(include_str!("migrations/0001_initial.sql"))])
}
#[cfg(test)]
mod tests {
use super::migrations;
use rusqlite::Connection;
#[test]
fn migrations_apply_and_are_idempotent() {
let mut conn = Connection::open_in_memory().unwrap();
let m = migrations();
m.to_latest(&mut conn).expect("first apply");
m.to_latest(&mut conn).expect("second apply (idempotent)");
for table in ["api_cache", "features", "reports"] {
let count: i64 = conn
.query_row(
"SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name=?1",
[table],
|r| r.get(0),
)
.unwrap();
assert_eq!(count, 1, "table {table} missing after migration");
}
}
}