use schemerz_rusqlite::RusqliteMigration;
pub fn all_migrations() -> Vec<Box<dyn RusqliteMigration<Error = rusqlite::Error>>> {
vec![Box::new(init::Migration {})]
}
mod init {
use rusqlite::{self};
use schemerz::{self, migration};
use schemerz_rusqlite::RusqliteMigration;
use uuid::Uuid;
pub(super) struct Migration;
pub(super) const MIGRATION_ID: Uuid = Uuid::from_fields(
0x68525b40,
0x36e5,
0x46aa,
b"\xa7\x65\x72\x0f\x83\x89\xb9\x9d",
);
migration!(
Migration,
MIGRATION_ID,
[],
"Initialize the cachemeta database."
);
impl RusqliteMigration for Migration {
type Error = rusqlite::Error;
fn up(&self, transaction: &rusqlite::Transaction) -> Result<(), Self::Error> {
transaction.execute_batch(
"CREATE TABLE compactblocks_meta (
height INTEGER PRIMARY KEY,
blockhash BLOB NOT NULL,
time INTEGER NOT NULL,
sapling_outputs_count INTEGER NOT NULL,
orchard_actions_count INTEGER NOT NULL
)",
)?;
Ok(())
}
fn down(&self, transaction: &rusqlite::Transaction) -> Result<(), Self::Error> {
transaction.execute_batch("DROP TABLE compactblocks_meta;")?;
Ok(())
}
}
}