| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | pub use diesel::*;pub use diesel_derives::*;use diesel_migrations::*;use std::{fmt::Debug, io, path::Path};pub mod kv;use lib_sqlite::PoolConfig;pub use lib_sqlite::{ConnectionPool, DBConnection, Database};pub mod schema;#[macro_use]pub mod macros;#[macro_use]extern crate diesel;#[macro_use]extern crate diesel_derives;#[macro_use]extern crate diesel_migrations;pub type Error = diesel::result::Error;pub mod prelude {    pub use super::UserDatabaseConnection;    pub use crate::*;    pub use diesel::SqliteConnection;    pub use diesel::{query_dsl::*, BelongingToDsl, ExpressionMethods, RunQueryDsl};}embed_migrations!("../flowy-database/migrations/");pub const DB_NAME: &str = "flowy-database.db";pub fn init(storage_path: &str) -> Result<Database, io::Error> {    if !Path::new(storage_path).exists() {        std::fs::create_dir_all(storage_path)?;    }    let pool_config = PoolConfig::default();    let database = Database::new(storage_path, DB_NAME, pool_config).map_err(as_io_error)?;    let conn = database.get_connection().map_err(as_io_error)?;    let _ = embedded_migrations::run(&*conn).map_err(as_io_error)?;    Ok(database)}fn as_io_error<E>(e: E) -> io::Errorwhere    E: Into<lib_sqlite::Error> + Debug,{    let msg = format!("{:?}", e);    io::Error::new(io::ErrorKind::NotConnected, msg)}pub trait UserDatabaseConnection: Send + Sync {    fn get_connection(&self) -> Result<DBConnection, String>;}
 |