csml_engine 1.11.2

The CSML Engine is a conversational engine designed to make it extremely easy to create rich and powerful chatbots.
Documentation
pub mod bot;
pub mod conversations;
pub mod memories;
pub mod messages;
pub mod state;

pub mod pagination;

pub mod schema;
pub mod models;

pub mod expired_data;

use crate::{Database, EngineError, PostgresqlClient};

use diesel::prelude::{Connection, PgConnection};

embed_migrations!("migrations/postgresql");

pub fn init() -> Result<Database, EngineError> {

    let uri = match std::env::var("POSTGRESQL_URL") {
        Ok(var) => var,
        _ => "".to_owned(),
    };

    let pg_connection = PgConnection::establish(&uri)
        .unwrap_or_else(|_| panic!("Error connecting to {}", uri));

    let db = Database::Postgresql(
        PostgresqlClient::new(pg_connection)
    );
    Ok(db)
}

pub fn make_migrations() -> Result<(), EngineError> {
    let uri = match std::env::var("POSTGRESQL_URL") {
        Ok(var) => var,
        _ => "".to_owned(),
    };

    let pg_connection = PgConnection::establish(&uri)
        .unwrap_or_else(|_| panic!("Error connecting to {}", uri));

    embedded_migrations::run_with_output(&pg_connection, &mut std::io::stdout())?;

    Ok(())
}

pub fn get_db<'a>(db: &'a Database) -> Result<&'a PostgresqlClient, EngineError> {
    match db {
        Database::Postgresql(db) => Ok(db),
        _ => Err(EngineError::Manager(
            "Postgresql connector is not setup correctly".to_owned(),
        )),
    }
}