use diesel::{ sqlite::SqliteConnection, prelude::* }; use dotenv::dotenv; use std::{ env, sync::{Arc, Mutex} }; use crate::{ errors::USrvResult, db::* }; use u_db::schema; pub type Storage = Arc>; pub struct UDB { conn: SqliteConnection } impl UDB { pub fn new() -> USrvResult { dotenv()?; let db_path = env::var("DATABASE_URL")?; let conn = SqliteConnection::establish(&db_path)?; conn.execute("PRAGMA foreign_keys = ON;")?; let instance = UDB { conn }; Ok(Arc::new(Mutex::new(instance))) } pub fn new_agent(&self, agent: IAgent) -> USrvResult<()> { use schema::agents; diesel::insert_into(agents::table) .values(agent) .execute(&self.conn)?; Ok(()) } pub fn get_agents(&self) -> USrvResult> { use schema::agents; let result = agents::table .load::(&self.conn)?; Ok(result) } }