Add database rating input
This commit is contained in:
@@ -32,7 +32,7 @@ impl Database {
|
|||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
title TEXT NOT NULL,
|
title TEXT NOT NULL,
|
||||||
interpret_id INTEGER 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)
|
UNIQUE(title, interpret_id)
|
||||||
);
|
);
|
||||||
CREATE TABLE IF NOT EXISTS ratings (
|
CREATE TABLE IF NOT EXISTS ratings (
|
||||||
|
@@ -11,14 +11,15 @@ async fn main() {
|
|||||||
let db = database::Database::new()
|
let db = database::Database::new()
|
||||||
.await
|
.await
|
||||||
.expect("Could not create database");
|
.expect("Could not create database");
|
||||||
|
db.create_tables().await.unwrap();
|
||||||
|
|
||||||
let (usernumber, userrating) = userinterface::get_user_rating(&db).await.expect("Lala");
|
let (usernumber, userrating) = userinterface::get_user_rating(&db).await.expect("Lala");
|
||||||
|
|
||||||
let track = player
|
let (interpret, song) = player
|
||||||
.get_interpret_and_track()
|
.get_interpret_and_track()
|
||||||
.expect("Could not read track");
|
.expect("Could not read track");
|
||||||
println!("User: {usernumber} with rating: {userrating}: {track}");
|
|
||||||
|
|
||||||
db.create_tables().await.unwrap();
|
db.user_add_rating(usernumber, &interpret, &song, userrating)
|
||||||
//db.add_user(1, "Janek").await.unwrap();
|
.await
|
||||||
|
.expect("Can not add rating");
|
||||||
}
|
}
|
||||||
|
@@ -11,13 +11,13 @@ impl MprisPlayer {
|
|||||||
Ok(MprisPlayer { player_finder })
|
Ok(MprisPlayer { player_finder })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_interpret_and_track(&self) -> Result<String> {
|
pub fn get_interpret_and_track(&self) -> Result<(String, String)> {
|
||||||
let player = self.player_finder.find_active()?;
|
let player = self.player_finder.find_active()?;
|
||||||
|
|
||||||
let metadata = player.get_metadata()?;
|
let metadata = player.get_metadata()?;
|
||||||
if let (Some(title), Some(artists)) = (metadata.title(), metadata.artists()) {
|
if let (Some(title), Some(artists)) = (metadata.title(), metadata.artists()) {
|
||||||
let artist = artists.join(", ");
|
let artist = artists.join(", ");
|
||||||
return Ok(format!("{artist} - {title}"));
|
return Ok((artist, title.to_owned()));
|
||||||
}
|
}
|
||||||
Err(anyhow!("Could not create interpret and title string"))
|
Err(anyhow!("Could not create interpret and title string"))
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,7 @@ use ratatui::layout::{Constraint, Layout};
|
|||||||
use ratatui::style::{Color, Style};
|
use ratatui::style::{Color, Style};
|
||||||
use ratatui::widgets::{Block, Borders};
|
use ratatui::widgets::{Block, Borders};
|
||||||
use ratatui::Terminal;
|
use ratatui::Terminal;
|
||||||
use std::io;
|
use std::{i64, io};
|
||||||
use tui_textarea::{Input, Key, TextArea};
|
use tui_textarea::{Input, Key, TextArea};
|
||||||
|
|
||||||
use anyhow::Result;
|
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 stdout = io::stdout();
|
||||||
let mut stdout = stdout.lock();
|
let mut stdout = stdout.lock();
|
||||||
|
|
||||||
@@ -165,5 +165,8 @@ pub async fn get_user_rating(db: &Database) -> Result<(String, String)> {
|
|||||||
)?;
|
)?;
|
||||||
term.show_cursor()?;
|
term.show_cursor()?;
|
||||||
|
|
||||||
Ok((user_number, user_rating))
|
let user_id = user_number.parse::<i64>()?;
|
||||||
|
let rating_int = user_rating.parse::<i64>()?;
|
||||||
|
|
||||||
|
Ok((user_id, rating_int))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user