Code formatting
This commit is contained in:
+16
-6
@@ -34,7 +34,7 @@ pub mod request {
|
|||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
pub song_id: uuid::Uuid,
|
pub song_id: uuid::Uuid,
|
||||||
pub coverart_queue_id: uuid::Uuid
|
pub coverart_queue_id: uuid::Uuid,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ pub mod response {
|
|||||||
#[derive(Debug, Default, serde::Deserialize, serde::Serialize)]
|
#[derive(Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Response {
|
pub struct Response {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
pub data: Vec<icarus_models::coverart::CoverArt>
|
pub data: Vec<icarus_models::coverart::CoverArt>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,11 @@ pub mod db {
|
|||||||
pub mod cov_db {
|
pub mod cov_db {
|
||||||
use sqlx::Row;
|
use sqlx::Row;
|
||||||
|
|
||||||
pub async fn create(pool: &sqlx::PgPool, coverart: &icarus_models::coverart::CoverArt, song_id: &uuid::Uuid) -> Result<uuid::Uuid, sqlx::Error> {
|
pub async fn create(
|
||||||
|
pool: &sqlx::PgPool,
|
||||||
|
coverart: &icarus_models::coverart::CoverArt,
|
||||||
|
song_id: &uuid::Uuid,
|
||||||
|
) -> Result<uuid::Uuid, sqlx::Error> {
|
||||||
let result = sqlx::query(
|
let result = sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
INSERT INTO "coverart" (title, path, song_id) VALUES($1, $2, $3) RETURNING id;
|
INSERT INTO "coverart" (title, path, song_id) VALUES($1, $2, $3) RETURNING id;
|
||||||
@@ -448,8 +452,13 @@ pub mod endpoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_coverart(axum::Extension(pool): axum::Extension<sqlx::PgPool>,
|
pub async fn create_coverart(
|
||||||
axum::Json(payload): axum::Json<super::request::create_coverart::Request>) -> (axum::http::StatusCode, axum::Json<super::response::create_coverart::Response>) {
|
axum::Extension(pool): axum::Extension<sqlx::PgPool>,
|
||||||
|
axum::Json(payload): axum::Json<super::request::create_coverart::Request>,
|
||||||
|
) -> (
|
||||||
|
axum::http::StatusCode,
|
||||||
|
axum::Json<super::response::create_coverart::Response>,
|
||||||
|
) {
|
||||||
let mut response = super::response::create_coverart::Response::default();
|
let mut response = super::response::create_coverart::Response::default();
|
||||||
let id = payload.coverart_queue_id;
|
let id = payload.coverart_queue_id;
|
||||||
|
|
||||||
@@ -467,7 +476,8 @@ pub mod endpoint {
|
|||||||
let filename = format!("{}-coverart.jpeg", &song.filename[..8]);
|
let filename = format!("{}-coverart.jpeg", &song.filename[..8]);
|
||||||
let save_path = dir.join(&filename);
|
let save_path = dir.join(&filename);
|
||||||
let path = String::from(save_path.to_str().unwrap());
|
let path = String::from(save_path.to_str().unwrap());
|
||||||
let mut coverart = icarus_models::coverart::init::init_coverart_only_path(path);
|
let mut coverart =
|
||||||
|
icarus_models::coverart::init::init_coverart_only_path(path);
|
||||||
coverart.title = song.album.clone();
|
coverart.title = song.album.clone();
|
||||||
coverart.data = data;
|
coverart.data = data;
|
||||||
|
|
||||||
|
|||||||
+77
-26
@@ -193,19 +193,22 @@ pub mod song_db {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_song(pool: &sqlx::PgPool, id: &uuid::Uuid) -> Result<icarus_models::song::Song, sqlx::Error> {
|
pub async fn get_song(
|
||||||
|
pool: &sqlx::PgPool,
|
||||||
|
id: &uuid::Uuid,
|
||||||
|
) -> Result<icarus_models::song::Song, sqlx::Error> {
|
||||||
eprintln!("Fetching song");
|
eprintln!("Fetching song");
|
||||||
let result = sqlx::query(
|
let result = sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
SELECT * FROM "song" WHERE id = $1
|
SELECT * FROM "song" WHERE id = $1
|
||||||
"#
|
"#,
|
||||||
)
|
)
|
||||||
.bind(id)
|
.bind(id)
|
||||||
.fetch_one(pool)
|
.fetch_one(pool)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
eprintln!("Error querying data: {:?}", e);
|
eprintln!("Error querying data: {:?}", e);
|
||||||
});
|
});
|
||||||
|
|
||||||
eprintln!("Result {:?}", result);
|
eprintln!("Result {:?}", result);
|
||||||
|
|
||||||
@@ -219,27 +222,75 @@ pub mod song_db {
|
|||||||
eprintln!("date_created {:?}", date_created_time);
|
eprintln!("date_created {:?}", date_created_time);
|
||||||
|
|
||||||
Ok(icarus_models::song::Song {
|
Ok(icarus_models::song::Song {
|
||||||
id: row.try_get("id").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
id: row
|
||||||
title: row.try_get("title").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.try_get("id")
|
||||||
artist: row.try_get("artist").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
album_artist: row.try_get("album_artist").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.unwrap(),
|
||||||
album: row.try_get("album").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
title: row
|
||||||
genre: row.try_get("genre").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.try_get("title")
|
||||||
year: row.try_get("year").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
track: row.try_get("track").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.unwrap(),
|
||||||
disc: row.try_get("disc").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
artist: row
|
||||||
track_count: row.try_get("track_count").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.try_get("artist")
|
||||||
disc_count: row.try_get("disc_count").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
duration: row.try_get("duration").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.unwrap(),
|
||||||
audio_type: row.try_get("audio_type").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
album_artist: row
|
||||||
filename: row.try_get("filename").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.try_get("album_artist")
|
||||||
directory: row.try_get("directory").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
album: row
|
||||||
|
.try_get("album")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
genre: row
|
||||||
|
.try_get("genre")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
year: row
|
||||||
|
.try_get("year")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
track: row
|
||||||
|
.try_get("track")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
disc: row
|
||||||
|
.try_get("disc")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
track_count: row
|
||||||
|
.try_get("track_count")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
disc_count: row
|
||||||
|
.try_get("disc_count")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
duration: row
|
||||||
|
.try_get("duration")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
audio_type: row
|
||||||
|
.try_get("audio_type")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
filename: row
|
||||||
|
.try_get("filename")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
|
directory: row
|
||||||
|
.try_get("directory")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
date_created: date_created_time.to_string(),
|
date_created: date_created_time.to_string(),
|
||||||
user_id: row.try_get("user_id").map_err(|_e| sqlx::Error::RowNotFound).unwrap(),
|
user_id: row
|
||||||
|
.try_get("user_id")
|
||||||
|
.map_err(|_e| sqlx::Error::RowNotFound)
|
||||||
|
.unwrap(),
|
||||||
data: Vec::new(),
|
data: Vec::new(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Err(_) => Err(sqlx::Error::RowNotFound)
|
Err(_) => Err(sqlx::Error::RowNotFound),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+47
-17
@@ -104,7 +104,7 @@ pub mod init {
|
|||||||
.route(
|
.route(
|
||||||
crate::callers::endpoints::CREATECOVERART,
|
crate::callers::endpoints::CREATECOVERART,
|
||||||
post(crate::callers::coverart::endpoint::create_coverart),
|
post(crate::callers::coverart::endpoint::create_coverart),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn app() -> axum::Router {
|
pub async fn app() -> axum::Router {
|
||||||
@@ -395,7 +395,10 @@ mod tests {
|
|||||||
app.clone().oneshot(req).await
|
app.clone().oneshot(req).await
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_queued_coverart(app: &axum::Router, coverart_queue_id: &uuid::Uuid) -> Result<axum::response::Response, std::convert::Infallible> {
|
async fn get_queued_coverart(
|
||||||
|
app: &axum::Router,
|
||||||
|
coverart_queue_id: &uuid::Uuid,
|
||||||
|
) -> Result<axum::response::Response, std::convert::Infallible> {
|
||||||
let uri = format!(
|
let uri = format!(
|
||||||
"{}?id={}",
|
"{}?id={}",
|
||||||
crate::callers::endpoints::QUEUECOVERART,
|
crate::callers::endpoints::QUEUECOVERART,
|
||||||
@@ -958,8 +961,7 @@ mod tests {
|
|||||||
"Should not be empty"
|
"Should not be empty"
|
||||||
);
|
);
|
||||||
|
|
||||||
match get_queued_coverart(&app, &resp_coverart_id).await
|
match get_queued_coverart(&app, &resp_coverart_id).await {
|
||||||
{
|
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
let resp = get_resp_data::<
|
let resp = get_resp_data::<
|
||||||
crate::callers::coverart::response::fetch_coverart_no_data::Response,
|
crate::callers::coverart::response::fetch_coverart_no_data::Response,
|
||||||
@@ -1378,36 +1380,64 @@ mod tests {
|
|||||||
|
|
||||||
eprintln!("Song: {:?}", song);
|
eprintln!("Song: {:?}", song);
|
||||||
|
|
||||||
|
|
||||||
match upload_coverart_queue_req(&app).await {
|
match upload_coverart_queue_req(&app).await {
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
let resp =
|
let resp = get_resp_data::<
|
||||||
get_resp_data::<crate::callers::coverart::response::Response>(response)
|
crate::callers::coverart::response::Response,
|
||||||
.await;
|
>(
|
||||||
assert_eq!(false, resp.data.is_empty(), "Should not be empty");
|
response
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
assert_eq!(
|
||||||
|
false,
|
||||||
|
resp.data.is_empty(),
|
||||||
|
"Should not be empty"
|
||||||
|
);
|
||||||
let coverart_id = resp.data[0];
|
let coverart_id = resp.data[0];
|
||||||
assert_eq!(false, coverart_id.is_nil(), "Should not be empty");
|
assert_eq!(
|
||||||
|
false,
|
||||||
|
coverart_id.is_nil(),
|
||||||
|
"Should not be empty"
|
||||||
|
);
|
||||||
|
|
||||||
match coverart_queue_song_queue_link_req(&app, &coverart_id, &song_queue_id)
|
match coverart_queue_song_queue_link_req(
|
||||||
.await
|
&app,
|
||||||
|
&coverart_id,
|
||||||
|
&song_queue_id,
|
||||||
|
)
|
||||||
|
.await
|
||||||
{
|
{
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
let resp = get_resp_data::<
|
let resp = get_resp_data::<
|
||||||
crate::callers::coverart::response::link::Response,
|
crate::callers::coverart::response::link::Response,
|
||||||
>(response)
|
>(response)
|
||||||
.await;
|
.await;
|
||||||
assert_eq!(false, resp.data.is_empty(), "Should not be empty");
|
assert_eq!(
|
||||||
let resp_coverart_id = resp.data[0].coverart_id;
|
false,
|
||||||
let resp_song_queue_id = resp.data[0].song_queue_id;
|
resp.data.is_empty(),
|
||||||
|
"Should not be empty"
|
||||||
|
);
|
||||||
|
let resp_coverart_id =
|
||||||
|
resp.data[0].coverart_id;
|
||||||
|
let resp_song_queue_id =
|
||||||
|
resp.data[0].song_queue_id;
|
||||||
|
|
||||||
assert_eq!(false, resp_coverart_id.is_nil(), "Should not be empty");
|
assert_eq!(
|
||||||
|
false,
|
||||||
|
resp_coverart_id.is_nil(),
|
||||||
|
"Should not be empty"
|
||||||
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
false,
|
false,
|
||||||
resp_song_queue_id.is_nil(),
|
resp_song_queue_id.is_nil(),
|
||||||
"Should not be empty"
|
"Should not be empty"
|
||||||
);
|
);
|
||||||
|
|
||||||
match get_queued_coverart(&app, &resp_coverart_id).await
|
match get_queued_coverart(
|
||||||
|
&app,
|
||||||
|
&resp_coverart_id,
|
||||||
|
)
|
||||||
|
.await
|
||||||
{
|
{
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
let resp = get_resp_data::<
|
let resp = get_resp_data::<
|
||||||
|
|||||||
Reference in New Issue
Block a user