From 3a1fbd48d99e74f168d2b015a511c5802d49b317 Mon Sep 17 00:00:00 2001 From: structix Date: Mon, 25 Mar 2024 11:55:18 +0100 Subject: [PATCH] Add database rating input --- src/database.rs | 2 +- src/main.rs | 9 +++++---- src/player.rs | 4 ++-- src/userinterface.rs | 9 ++++++--- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/database.rs b/src/database.rs index 40b5f86..129a2be 100644 --- a/src/database.rs +++ b/src/database.rs @@ -32,7 +32,7 @@ impl Database { id INTEGER PRIMARY KEY, title TEXT NOT NULL, interpret_id INTEGER NOT NULL, - FOREIGN KEY("interpret_id") REFERENCES interpret (id), + FOREIGN KEY("interpret_id") REFERENCES interprets (id), UNIQUE(title, interpret_id) ); CREATE TABLE IF NOT EXISTS ratings ( diff --git a/src/main.rs b/src/main.rs index cf39fe8..9c93ab3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,14 +11,15 @@ async fn main() { let db = database::Database::new() .await .expect("Could not create database"); + db.create_tables().await.unwrap(); let (usernumber, userrating) = userinterface::get_user_rating(&db).await.expect("Lala"); - let track = player + let (interpret, song) = player .get_interpret_and_track() .expect("Could not read track"); - println!("User: {usernumber} with rating: {userrating}: {track}"); - db.create_tables().await.unwrap(); - //db.add_user(1, "Janek").await.unwrap(); + db.user_add_rating(usernumber, &interpret, &song, userrating) + .await + .expect("Can not add rating"); } diff --git a/src/player.rs b/src/player.rs index f63a527..b4661e4 100644 --- a/src/player.rs +++ b/src/player.rs @@ -11,13 +11,13 @@ impl MprisPlayer { Ok(MprisPlayer { player_finder }) } - pub fn get_interpret_and_track(&self) -> Result { + pub fn get_interpret_and_track(&self) -> Result<(String, String)> { let player = self.player_finder.find_active()?; let metadata = player.get_metadata()?; if let (Some(title), Some(artists)) = (metadata.title(), metadata.artists()) { let artist = artists.join(", "); - return Ok(format!("{artist} - {title}")); + return Ok((artist, title.to_owned())); } Err(anyhow!("Could not create interpret and title string")) } diff --git a/src/userinterface.rs b/src/userinterface.rs index cc6145b..b23cb53 100644 --- a/src/userinterface.rs +++ b/src/userinterface.rs @@ -7,7 +7,7 @@ use ratatui::layout::{Constraint, Layout}; use ratatui::style::{Color, Style}; use ratatui::widgets::{Block, Borders}; use ratatui::Terminal; -use std::io; +use std::{i64, io}; use tui_textarea::{Input, Key, TextArea}; use anyhow::Result; @@ -72,7 +72,7 @@ fn validate_rating(textarea: &mut TextArea) -> bool { } } -pub async fn get_user_rating(db: &Database) -> Result<(String, String)> { +pub async fn get_user_rating(db: &Database) -> Result<(i64, i64)> { let stdout = io::stdout(); let mut stdout = stdout.lock(); @@ -165,5 +165,8 @@ pub async fn get_user_rating(db: &Database) -> Result<(String, String)> { )?; term.show_cursor()?; - Ok((user_number, user_rating)) + let user_id = user_number.parse::()?; + let rating_int = user_rating.parse::()?; + + Ok((user_id, rating_int)) }