icarus_models -> simodels
Rust CI / Rustfmt (pull_request) Successful in 2m51s
Rust CI / Check (pull_request) Successful in 3m42s
Rust CI / Test Suite (pull_request) Successful in 4m53s
Rust CI / build (pull_request) Successful in 4m11s
Rust CI / Clippy (pull_request) Successful in 4m54s

This commit is contained in:
2026-07-18 13:36:05 -04:00
parent e211b09422
commit 884753b996
9 changed files with 72 additions and 80 deletions
Generated
+15 -15
View File
@@ -1049,20 +1049,6 @@ dependencies = [
"rand 0.10.2", "rand 0.10.2",
] ]
[[package]]
name = "icarus_models"
version = "0.11.3"
source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.11.3#859b0fb1b377370d8171e22e59893d86e41b258b"
dependencies = [
"josekit",
"rand 0.10.2",
"serde",
"serde_json",
"time",
"utoipa",
"uuid",
]
[[package]] [[package]]
name = "icu_collections" name = "icu_collections"
version = "2.2.0" version = "2.2.0"
@@ -2155,6 +2141,20 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
[[package]]
name = "simodels"
version = "0.11.3"
source = "git+ssh://git@git.kundeng.us/phoenix/simodels.git?tag=v0.11.3-main-fe9d101bd0-111#fe9d101bd019f91fe8c99c29721ccb0e6e90c92c"
dependencies = [
"josekit",
"rand 0.10.2",
"serde",
"serde_json",
"time",
"utoipa",
"uuid",
]
[[package]] [[package]]
name = "simple_asn1" name = "simple_asn1"
version = "0.6.4" version = "0.6.4"
@@ -2191,7 +2191,6 @@ dependencies = [
"common-multipart-rfc7578", "common-multipart-rfc7578",
"futures", "futures",
"icarus_meta", "icarus_meta",
"icarus_models",
"josekit", "josekit",
"jsonwebtoken", "jsonwebtoken",
"mime_guess", "mime_guess",
@@ -2199,6 +2198,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"sienvy", "sienvy",
"simodels",
"sqlx", "sqlx",
"tempfile", "tempfile",
"time", "time",
+1 -1
View File
@@ -25,7 +25,7 @@ josekit = { version = "0.10.3" }
utoipa = { version = "5.5.0", features = ["axum_extras"] } utoipa = { version = "5.5.0", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] } utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
icarus_meta = { git = "ssh://git@git.kundeng.us/phoenix/icarus_meta.git", tag = "v0.6.1" } icarus_meta = { git = "ssh://git@git.kundeng.us/phoenix/icarus_meta.git", tag = "v0.6.1" }
icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.11.3" } simodels = { git = "ssh://git@git.kundeng.us/phoenix/simodels.git", tag = "v0.11.3-main-fe9d101bd0-111" }
sienvy = { git = "ssh://git@git.kundeng.us/phoenix/sienvy.git", tag = "v0.8.0-main-d06c8fdf49-006" } sienvy = { git = "ssh://git@git.kundeng.us/phoenix/sienvy.git", tag = "v0.8.0-main-d06c8fdf49-006" }
[dev-dependencies] [dev-dependencies]
+1 -1
View File
@@ -40,7 +40,7 @@ pub async fn auth<B>(
let mut validation = Validation::new(jsonwebtoken::Algorithm::HS256); let mut validation = Validation::new(jsonwebtoken::Algorithm::HS256);
validation.set_audience(&["icarus"]); // Must match exactly what's in the token validation.set_audience(&["icarus"]); // Must match exactly what's in the token
let _claims = decode::<icarus_models::token::UserClaims>( let _claims = decode::<simodels::token::UserClaims>(
&token, &token,
&DecodingKey::from_secret(secret_key.as_ref()), &DecodingKey::from_secret(secret_key.as_ref()),
&validation, &validation,
+14 -17
View File
@@ -20,7 +20,7 @@ pub mod response {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct Response { pub struct Response {
pub message: String, pub message: String,
pub data: Vec<icarus_models::coverart::CoverArt>, pub data: Vec<simodels::coverart::CoverArt>,
} }
} }
@@ -28,7 +28,7 @@ pub mod response {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct Response { pub struct Response {
pub message: String, pub message: String,
pub data: Vec<icarus_models::coverart::CoverArt>, pub data: Vec<simodels::coverart::CoverArt>,
} }
} }
} }
@@ -74,15 +74,15 @@ pub mod endpoint {
let coverart_type = if file_type.file_type let coverart_type = if file_type.file_type
== icarus_meta::detection::coverart::constants::JPEG_TYPE == icarus_meta::detection::coverart::constants::JPEG_TYPE
{ {
icarus_models::types::CoverArtType::JpegExtension simodels::types::CoverArtType::JpegExtension
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::JPG_TYPE == icarus_meta::detection::coverart::constants::JPG_TYPE
{ {
icarus_models::types::CoverArtType::JpgExtension simodels::types::CoverArtType::JpgExtension
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::PNG_TYPE == icarus_meta::detection::coverart::constants::PNG_TYPE
{ {
icarus_models::types::CoverArtType::PngExtension simodels::types::CoverArtType::PngExtension
} else { } else {
response.message = String::from("Invalid CoverArt type"); response.message = String::from("Invalid CoverArt type");
return ( return (
@@ -91,13 +91,11 @@ pub mod endpoint {
); );
}; };
let filename = let filename =
icarus_models::coverart::generate_filename(coverart_type, true) simodels::coverart::generate_filename(coverart_type, true).unwrap();
.unwrap();
let mut coverart = let mut coverart = simodels::coverart::init::init_coverart_dir_and_filename(
icarus_models::coverart::init::init_coverart_dir_and_filename( &directory, &filename,
&directory, &filename, );
);
coverart.title = song.album.clone(); coverart.title = song.album.clone();
coverart.file_type = file_type.file_type; coverart.file_type = file_type.file_type;
coverart.data = data; coverart.data = data;
@@ -200,7 +198,7 @@ pub mod endpoint {
axum::extract::Path(id): axum::extract::Path<uuid::Uuid>, axum::extract::Path(id): axum::extract::Path<uuid::Uuid>,
) -> (axum::http::StatusCode, axum::response::Response) { ) -> (axum::http::StatusCode, axum::response::Response) {
match repo::coverart::get_coverart(&pool, &id).await { match repo::coverart::get_coverart(&pool, &id).await {
Ok(coverart) => match icarus_models::coverart::io::to_data(&coverart) { Ok(coverart) => match simodels::coverart::io::to_data(&coverart) {
Ok(data) => { Ok(data) => {
let (file_type, img_type) = let (file_type, img_type) =
match icarus_meta::detection::coverart::file_type_from_data(&data) { match icarus_meta::detection::coverart::file_type_from_data(&data) {
@@ -208,15 +206,15 @@ pub mod endpoint {
if file_type.file_type if file_type.file_type
== icarus_meta::detection::coverart::constants::JPEG_TYPE == icarus_meta::detection::coverart::constants::JPEG_TYPE
{ {
(file_type, icarus_models::types::CoverArtType::JpegExtension) (file_type, simodels::types::CoverArtType::JpegExtension)
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::JPG_TYPE == icarus_meta::detection::coverart::constants::JPG_TYPE
{ {
(file_type, icarus_models::types::CoverArtType::JpgExtension) (file_type, simodels::types::CoverArtType::JpgExtension)
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::PNG_TYPE == icarus_meta::detection::coverart::constants::PNG_TYPE
{ {
(file_type, icarus_models::types::CoverArtType::PngExtension) (file_type, simodels::types::CoverArtType::PngExtension)
} else { } else {
return ( return (
axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::http::StatusCode::INTERNAL_SERVER_ERROR,
@@ -235,8 +233,7 @@ pub mod endpoint {
let bytes = axum::body::Bytes::from(data); let bytes = axum::body::Bytes::from(data);
let mut response = bytes.into_response(); let mut response = bytes.into_response();
let headers = response.headers_mut(); let headers = response.headers_mut();
let filename = let filename = simodels::coverart::generate_filename(img_type, true).unwrap();
icarus_models::coverart::generate_filename(img_type, true).unwrap();
headers.insert( headers.insert(
axum::http::header::CONTENT_TYPE, axum::http::header::CONTENT_TYPE,
file_type.mime.parse().unwrap(), file_type.mime.parse().unwrap(),
+4 -5
View File
@@ -331,23 +331,22 @@ pub mod endpoint {
let coverart_type = if file_type.file_type let coverart_type = if file_type.file_type
== icarus_meta::detection::coverart::constants::JPEG_TYPE == icarus_meta::detection::coverart::constants::JPEG_TYPE
{ {
icarus_models::types::CoverArtType::JpegExtension simodels::types::CoverArtType::JpegExtension
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::JPG_TYPE == icarus_meta::detection::coverart::constants::JPG_TYPE
{ {
icarus_models::types::CoverArtType::JpgExtension simodels::types::CoverArtType::JpgExtension
} else if file_type.file_type } else if file_type.file_type
== icarus_meta::detection::coverart::constants::PNG_TYPE == icarus_meta::detection::coverart::constants::PNG_TYPE
{ {
icarus_models::types::CoverArtType::PngExtension simodels::types::CoverArtType::PngExtension
} else { } else {
return ( return (
axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::http::StatusCode::INTERNAL_SERVER_ERROR,
axum::response::Response::default(), axum::response::Response::default(),
); );
}; };
let filename = let filename = simodels::coverart::generate_filename(coverart_type, true).unwrap();
icarus_models::coverart::generate_filename(coverart_type, true).unwrap();
headers.insert( headers.insert(
axum::http::header::CONTENT_DISPOSITION, axum::http::header::CONTENT_DISPOSITION,
format!("attachment; filename=\"{filename}\"") format!("attachment; filename=\"{filename}\"")
+10 -12
View File
@@ -36,8 +36,8 @@ pub mod request {
|| !self.song_queue_id.is_nil() || !self.song_queue_id.is_nil()
} }
pub fn to_song(&self) -> icarus_models::song::Song { pub fn to_song(&self) -> simodels::song::Song {
icarus_models::song::Song { simodels::song::Song {
id: uuid::Uuid::nil(), id: uuid::Uuid::nil(),
title: self.title.clone(), title: self.title.clone(),
artist: self.artist.clone(), artist: self.artist.clone(),
@@ -71,7 +71,7 @@ pub mod response {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct Response { pub struct Response {
pub message: String, pub message: String,
pub data: Vec<icarus_models::song::Song>, pub data: Vec<simodels::song::Song>,
} }
} }
@@ -79,15 +79,15 @@ pub mod response {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct Response { pub struct Response {
pub message: String, pub message: String,
pub data: Vec<icarus_models::song::Song>, pub data: Vec<simodels::song::Song>,
} }
} }
pub mod delete_song { pub mod delete_song {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct SongAndCoverArt { pub struct SongAndCoverArt {
pub song: icarus_models::song::Song, pub song: simodels::song::Song,
pub coverart: icarus_models::coverart::CoverArt, pub coverart: simodels::coverart::CoverArt,
} }
#[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)] #[derive(Debug, Default, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
@@ -134,11 +134,9 @@ pub mod endpoint {
if payload.is_valid() { if payload.is_valid() {
let mut song = payload.to_song(); let mut song = payload.to_song();
song.filename = icarus_models::song::generate_filename( song.filename =
icarus_models::types::MusicType::FlacExtension, simodels::song::generate_filename(simodels::types::MusicType::FlacExtension, true)
true, .unwrap();
)
.unwrap();
song.directory = sienvy::environment::get_root_directory().value; song.directory = sienvy::environment::get_root_directory().value;
match repo_queue::song::get_data(&pool, &payload.song_queue_id).await { match repo_queue::song::get_data(&pool, &payload.song_queue_id).await {
@@ -340,7 +338,7 @@ pub mod endpoint {
axum::extract::Path(id): axum::extract::Path<uuid::Uuid>, axum::extract::Path(id): axum::extract::Path<uuid::Uuid>,
) -> (axum::http::StatusCode, axum::response::Response) { ) -> (axum::http::StatusCode, axum::response::Response) {
match repo::song::get_song(&pool, &id).await { match repo::song::get_song(&pool, &id).await {
Ok(song) => match icarus_models::song::io::to_data(&song) { Ok(song) => match simodels::song::io::to_data(&song) {
Ok(data) => { Ok(data) => {
let bytes = axum::body::Bytes::from(data); let bytes = axum::body::Bytes::from(data);
let mut response = bytes.into_response(); let mut response = bytes.into_response();
+11 -11
View File
@@ -160,14 +160,14 @@ mod tests {
let key: String = sienvy::environment::get_secret_main_key().value; let key: String = sienvy::environment::get_secret_main_key().value;
let (message, issuer, audience) = token_fields(); let (message, issuer, audience) = token_fields();
let token_resource = icarus_models::token::TokenResource { let token_resource = simodels::token::TokenResource {
message: message, message: message,
issuer: issuer, issuer: issuer,
audiences: vec![audience], audiences: vec![audience],
id: TEST_USER_ID, id: TEST_USER_ID,
}; };
match icarus_models::token::create_token(&key, &token_resource, time::Duration::hours(1)) { match simodels::token::create_token(&key, &token_resource, time::Duration::hours(1)) {
Ok((access_token, _some_time)) => Ok(access_token), Ok((access_token, _some_time)) => Ok(access_token),
Err(err) => Err(err), Err(err) => Err(err),
} }
@@ -913,10 +913,10 @@ mod tests {
let temp_file = let temp_file =
tempfile::tempdir().expect("Could not create test directory"); tempfile::tempdir().expect("Could not create test directory");
let test_dir = String::from(temp_file.path().to_str().unwrap()); let test_dir = String::from(temp_file.path().to_str().unwrap());
let song = icarus_models::song::Song { let song = simodels::song::Song {
directory: test_dir, directory: test_dir,
filename: icarus_models::song::generate_filename( filename: simodels::song::generate_filename(
icarus_models::types::MusicType::FlacExtension, simodels::types::MusicType::FlacExtension,
true, true,
) )
.unwrap(), .unwrap(),
@@ -2219,20 +2219,20 @@ mod tests {
coverart_directory: &String, coverart_directory: &String,
coverart_filename: &String, coverart_filename: &String,
) -> Result<(Vec<u8>, Vec<u8>), std::io::Error> { ) -> Result<(Vec<u8>, Vec<u8>), std::io::Error> {
let song = icarus_models::song::Song { let song = simodels::song::Song {
directory: song_directory.clone(), directory: song_directory.clone(),
filename: song_filename.clone(), filename: song_filename.clone(),
..Default::default() ..Default::default()
}; };
let coverart = icarus_models::coverart::CoverArt { let coverart = simodels::coverart::CoverArt {
directory: coverart_directory.clone(), directory: coverart_directory.clone(),
filename: coverart_filename.clone(), filename: coverart_filename.clone(),
..Default::default() ..Default::default()
}; };
match icarus_models::song::io::to_data(&song) { match simodels::song::io::to_data(&song) {
Ok(song_data) => match icarus_models::coverart::io::to_data(&coverart) { Ok(song_data) => match simodels::coverart::io::to_data(&coverart) {
Ok(coverart_data) => Ok((song_data, coverart_data)), Ok(coverart_data) => Ok((song_data, coverart_data)),
Err(err) => Err(err), Err(err) => Err(err),
}, },
@@ -2248,14 +2248,14 @@ mod tests {
coverart_filename: &String, coverart_filename: &String,
coverart_data: Vec<u8>, coverart_data: Vec<u8>,
) -> Result<(), std::io::Error> { ) -> Result<(), std::io::Error> {
let song = icarus_models::song::Song { let song = simodels::song::Song {
directory: song_directory.clone(), directory: song_directory.clone(),
filename: song_filename.clone(), filename: song_filename.clone(),
data: song_data, data: song_data,
..Default::default() ..Default::default()
}; };
let coverart = icarus_models::coverart::CoverArt { let coverart = simodels::coverart::CoverArt {
directory: coverart_directory.clone(), directory: coverart_directory.clone(),
filename: coverart_filename.clone(), filename: coverart_filename.clone(),
data: coverart_data, data: coverart_data,
+7 -7
View File
@@ -2,7 +2,7 @@ use sqlx::Row;
pub async fn create( pub async fn create(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
coverart: &icarus_models::coverart::CoverArt, coverart: &simodels::coverart::CoverArt,
song_id: &uuid::Uuid, song_id: &uuid::Uuid,
) -> Result<uuid::Uuid, sqlx::Error> { ) -> Result<uuid::Uuid, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
@@ -36,7 +36,7 @@ pub async fn create(
pub async fn get_coverart( pub async fn get_coverart(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<icarus_models::coverart::CoverArt, sqlx::Error> { ) -> Result<simodels::coverart::CoverArt, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
SELECT id, title, directory, filename, file_type, song_id FROM "coverart" WHERE id = $1; SELECT id, title, directory, filename, file_type, song_id FROM "coverart" WHERE id = $1;
@@ -50,7 +50,7 @@ pub async fn get_coverart(
}); });
match result { match result {
Ok(row) => Ok(icarus_models::coverart::CoverArt { Ok(row) => Ok(simodels::coverart::CoverArt {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
@@ -84,7 +84,7 @@ pub async fn get_coverart(
pub async fn get_coverart_with_song_id( pub async fn get_coverart_with_song_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
song_id: &uuid::Uuid, song_id: &uuid::Uuid,
) -> Result<icarus_models::coverart::CoverArt, sqlx::Error> { ) -> Result<simodels::coverart::CoverArt, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
SELECT id, title, directory, filename, file_type, song_id FROM "coverart" WHERE song_id = $1; SELECT id, title, directory, filename, file_type, song_id FROM "coverart" WHERE song_id = $1;
@@ -98,7 +98,7 @@ pub async fn get_coverart_with_song_id(
}); });
match result { match result {
Ok(row) => Ok(icarus_models::coverart::CoverArt { Ok(row) => Ok(simodels::coverart::CoverArt {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
@@ -132,7 +132,7 @@ pub async fn get_coverart_with_song_id(
pub async fn delete_coverart( pub async fn delete_coverart(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<icarus_models::coverart::CoverArt, sqlx::Error> { ) -> Result<simodels::coverart::CoverArt, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
DELETE FROM "coverart" DELETE FROM "coverart"
@@ -148,7 +148,7 @@ pub async fn delete_coverart(
}); });
match result { match result {
Ok(row) => Ok(icarus_models::coverart::CoverArt { Ok(row) => Ok(simodels::coverart::CoverArt {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
+9 -11
View File
@@ -2,7 +2,7 @@ use sqlx::Row;
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
song: &icarus_models::song::Song, song: &simodels::song::Song,
) -> Result<(time::OffsetDateTime, uuid::Uuid), sqlx::Error> { ) -> Result<(time::OffsetDateTime, uuid::Uuid), sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
@@ -52,7 +52,7 @@ pub async fn insert(
pub async fn get_song( pub async fn get_song(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<icarus_models::song::Song, sqlx::Error> { ) -> Result<simodels::song::Song, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
SELECT * FROM "song" WHERE id = $1 SELECT * FROM "song" WHERE id = $1
@@ -72,7 +72,7 @@ pub async fn get_song(
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
.unwrap(); .unwrap();
Ok(icarus_models::song::Song { Ok(simodels::song::Song {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
@@ -145,9 +145,7 @@ pub async fn get_song(
} }
} }
pub async fn get_all_songs( pub async fn get_all_songs(pool: &sqlx::PgPool) -> Result<Vec<simodels::song::Song>, sqlx::Error> {
pool: &sqlx::PgPool,
) -> Result<Vec<icarus_models::song::Song>, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
r#" r#"
SELECT * FROM "song"; SELECT * FROM "song";
@@ -161,7 +159,7 @@ pub async fn get_all_songs(
match result { match result {
Ok(rows) => { Ok(rows) => {
let mut songs: Vec<icarus_models::song::Song> = Vec::new(); let mut songs: Vec<simodels::song::Song> = Vec::new();
for row in rows { for row in rows {
let date_created_time: time::OffsetDateTime = row let date_created_time: time::OffsetDateTime = row
@@ -169,7 +167,7 @@ pub async fn get_all_songs(
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
.unwrap(); .unwrap();
let song = icarus_models::song::Song { let song = simodels::song::Song {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
@@ -250,9 +248,9 @@ pub async fn get_all_songs(
pub async fn delete_song( pub async fn delete_song(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<icarus_models::song::Song, sqlx::Error> { ) -> Result<simodels::song::Song, sqlx::Error> {
let result = sqlx::query( let result = sqlx::query(
// icarus_models::song::Song, // simodels::song::Song,
r#" r#"
DELETE FROM "song" DELETE FROM "song"
WHERE id = $1 WHERE id = $1
@@ -273,7 +271,7 @@ pub async fn delete_song(
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)
.unwrap(); .unwrap();
Ok(icarus_models::song::Song { Ok(simodels::song::Song {
id: row id: row
.try_get("id") .try_get("id")
.map_err(|_e| sqlx::Error::RowNotFound) .map_err(|_e| sqlx::Error::RowNotFound)