prefect/
migrations.rs

1use rusqlite::Connection;
2use rusqlite_migration::{Migrations, M};
3
4use crate::Result;
5
6const MIGRATIONS: [&str; 1] = [include_str!("../migrations/00001-init.sql")];
7
8fn create_migrations() -> Migrations<'static> {
9    let items = MIGRATIONS.iter().map(|m| M::up(m)).collect::<Vec<_>>();
10    Migrations::new(items)
11}
12
13pub fn migrate(conn: &mut Connection) -> Result<()> {
14    let migrations = create_migrations();
15    migrations.to_latest(conn)?;
16    Ok(())
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22
23    #[test]
24    fn migrations_valid() {
25        let migrations = create_migrations();
26        migrations.validate().unwrap();
27    }
28
29    #[test]
30    fn migrations_work() {
31        let mut conn = rusqlite::Connection::open_in_memory().unwrap();
32        migrate(&mut conn).unwrap();
33    }
34}