summaryrefslogtreecommitdiff
path: root/src/database/mod.rs
blob: 7d0928fdd9b6126017f4c310393b374463b9f787 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use rusqlite::Connection;
use tracing::instrument;

pub mod chat;
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<Self, rusqlite::Error> {
        let conn = rusqlite::Connection::open("xssbook.db")?;
        Ok(Self(conn))
    }

    #[instrument(skip(self))]
    pub fn query(&self, query: String) -> Result<usize, rusqlite::Error> {
        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()?;
    db.init_chat()?;
    Ok(())
}