Skip to main content

memory_core/store/
schema.rs

1use rusqlite_migration::{Migrations, M};
2
3use crate::Error;
4
5pub fn migrations() -> Migrations<'static> {
6    Migrations::new(vec![
7        M::up(include_str!("migrations/001_initial.sql")),
8        M::up(include_str!("migrations/002_metrics.sql")),
9        M::up(include_str!("migrations/003_relations.sql")),
10        M::up(include_str!("migrations/004_cascade_fks.sql")),
11        M::up(include_str!("migrations/005_cleanup_orphans.sql")),
12        M::up(include_str!("migrations/006_activity_tokens.sql")),
13        M::up(include_str!("migrations/007_fix_fts_update_trigger.sql")),
14        M::up(include_str!("migrations/008_supersedes_index.sql")),
15        M::up(include_str!(
16            "migrations/009_fix_fts_hard_delete_trigger.sql"
17        )),
18        M::up(include_str!("migrations/010_event_log.sql")),
19    ])
20}
21
22pub const SCHEMA_VERSION: i64 = 10;
23
24pub fn check_version(conn: &rusqlite::Connection) -> crate::Result<()> {
25    let current: i64 = conn.pragma_query_value(None, "user_version", |r| r.get(0))?;
26    if current > SCHEMA_VERSION {
27        return Err(Error::SchemaVersionTooNew {
28            found: current,
29            supported: SCHEMA_VERSION,
30        });
31    }
32    Ok(())
33}