Add sqlite database

This commit is contained in:
2024-03-24 17:12:31 +01:00
parent 1eba31a03f
commit d0a8306a20
3 changed files with 56 additions and 1 deletions

View File

@@ -10,4 +10,6 @@ anyhow = "1.0.81"
crossterm = "0.27.0" crossterm = "0.27.0"
mpris = "2.0.1" mpris = "2.0.1"
ratatui = "0.26.1" ratatui = "0.26.1"
sqlx = { version = "0.7.4", features = ["sqlite", "runtime-tokio"] }
tokio = { version = "1.36.0", features = ["rt", "macros", "rt-multi-thread"] }
tui-textarea = "0.4.0" tui-textarea = "0.4.0"

49
src/database.rs Normal file
View File

@@ -0,0 +1,49 @@
use anyhow::Result;
use sqlx::{Row, SqlitePool};
pub struct Database {
pool: SqlitePool,
}
impl Database {
pub async fn new() -> Result<Self> {
let pool = SqlitePool::connect("sqlite:ratings.db").await?;
Ok(Database { pool })
}
pub async fn add_user(&self, name: &str, number: i64) -> Result<i64> {
let mut conn = self.pool.acquire().await?;
let id = sqlx::query(
r#"
INSERT INTO users (id, name)
VALUES (?1, ?2)
"#,
)
.bind(name)
.bind(number)
.execute(&mut *conn)
.await?
.last_insert_rowid();
Ok(id)
}
pub async fn user_exists(&self, number: i64) -> Result<i64> {
let mut conn = self.pool.acquire().await?;
let record = sqlx::query(
r#"
SELECT id FROM users
WHERE id = ?
"#,
)
.bind(number)
.fetch_one(&mut *conn)
.await?;
let id = record.try_get("id")?;
Ok(id)
}
}

View File

@@ -1,7 +1,11 @@
mod database;
mod player; mod player;
mod userinterface; mod userinterface;
fn main() { use tokio;
#[tokio::main]
async fn main() {
let player = player::MprisPlayer::new().expect("Could not create player"); let player = player::MprisPlayer::new().expect("Could not create player");
let (usernumber, userrating) = userinterface::get_user_rating().expect("Lala"); let (usernumber, userrating) = userinterface::get_user_rating().expect("Lala");