Add sqlite database
This commit is contained in:
@@ -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
49
src/database.rs
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
@@ -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");
|
||||||
|
Reference in New Issue
Block a user