use rusqlite::Connection; use tracing::instrument; pub mod comments; pub mod friends; pub mod likes; pub mod posts; pub mod sessions; pub mod users; #[derive(Debug)] pub struct Database(Connection); impl Database { pub fn connect() -> Result { let conn = rusqlite::Connection::open("xssbook.db")?; Ok(Self(conn)) } #[instrument(skip(self))] pub fn query(&self, query: String) -> Result { tracing::trace!("Running custom query"); self.0.execute(&query, []) } } pub fn init() -> Result<(), rusqlite::Error> { let db = Database::connect()?; db.init_users()?; db.init_posts()?; db.init_sessions()?; db.init_likes()?; db.init_comments()?; db.init_friends()?; Ok(()) }