Files
cipher/cipher_database/src/sqlite/mod.rs

30 lines
1023 B
Rust

use diesel::Connection;
use diesel::SqliteConnection;
use diesel_async::pooled_connection::bb8::Pool;
use diesel_async::pooled_connection::AsyncDieselConnectionManager;
use diesel_migrations::embed_migrations;
use diesel_migrations::EmbeddedMigrations;
use diesel_migrations::MigrationHarness;
use repository::SqliteRepositoryProvider;
use crate::BackendError;
pub mod repository;
mod schema;
const MIGRATIONS: EmbeddedMigrations = embed_migrations!("migrations/sqlite");
pub fn run_pending_migrations(database_url: &str) -> Result<(), BackendError> {
let mut connection = SqliteConnection::establish(database_url)?;
connection
.run_pending_migrations(MIGRATIONS)
.map_err(BackendError::DieselMigrationError)?;
Ok(())
}
pub async fn repository_provider(database_url: &str) -> Result<SqliteRepositoryProvider, BackendError> {
let config = AsyncDieselConnectionManager::new(database_url);
let pool = Pool::builder().build(config).await?;
Ok(SqliteRepositoryProvider::new(pool))
}