diff --git a/src/caller/mod.rs b/src/caller/mod.rs index 7594512..9791854 100644 --- a/src/caller/mod.rs +++ b/src/caller/mod.rs @@ -26,6 +26,11 @@ pub mod contact { pub nickname: Option, pub user_id: uuid::Uuid, } + + impl AddContactRequest { + pub fn is_valid(&self) -> bool { + } + } } pub mod response { @@ -45,88 +50,34 @@ pub mod contact { use axum::{Json, response::IntoResponse}; use crate::repo; - use crate::repo::queue as repo_queue; + use crate::repo::contact as contact_repo; - // TODO: Change the name of this endpoint. Including the function name and path - /// Endpoint to create song + /// Endpoint to create Contact #[utoipa::path( post, - path = super::super::queue::endpoints::QUEUEMETADATA, + path = super::super::endpoints::ADD_CONTACT, request_body( - content = super::request::create_metadata::Request, - description = "Data needed to create the song and save it to the filesystem", + content = super::request::AddContactRequest, + description = "Data needed to create a Contact", content_type = "application/json" ), responses( - (status = 200, description = "Song created", body = super::response::create_metadata::Response), - (status = 400, description = "Error", body = super::response::create_metadata::Response), - (status = 505, description = "Error creating song", body = super::response::create_metadata::Response) + (status = 201, description = "Contact created", body = super::response::AddContactResponse), + (status = 400, description = "Error", body = super::response::AddContactResponse), + (status = 500, description = "Error creating Contact", body = super::response::AddContactResponse) ) )] pub async fn create_metadata( axum::Extension(pool): axum::Extension, - axum::Json(payload): axum::Json, + axum::Json(payload): axum::Json, ) -> ( axum::http::StatusCode, - axum::Json, + axum::Json, ) { - let mut response = super::response::create_metadata::Response::default(); + let mut response = super::response::AddContactResponse::default(); if payload.is_valid() { - let mut song = payload.to_song(); - song.filename = icarus_models::song::generate_filename( - icarus_models::types::MusicType::FlacExtension, - true, - ) - .unwrap(); - song.directory = icarus_envy::environment::get_root_directory().await.value; - - match repo_queue::song::get_data(&pool, &payload.song_queue_id).await { - Ok(data) => { - song.data = data; - let dir = std::path::Path::new(&song.directory); - if !dir.exists() { - println!("Creating directory"); - match std::fs::create_dir_all(dir) { - Ok(_) => { - println!("Successfully created directory"); - } - Err(err) => { - eprintln!("Error: Unable to create the directory {err:?}"); - } - } - } - - match song.save_to_filesystem() { - Ok(_) => match repo::song::insert(&pool, &song).await { - Ok((date_created, id)) => { - song.id = id; - song.date_created = Some(date_created); - response.message = String::from("Successful"); - response.data.push(song); - - (axum::http::StatusCode::OK, axum::Json(response)) - } - Err(err) => { - response.message = - format!("{:?} song {:?}", err.to_string(), song); - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) - } - }, - Err(err) => { - response.message = err.to_string(); - ( - axum::http::StatusCode::INTERNAL_SERVER_ERROR, - axum::Json(response), - ) - } - } - } - Err(err) => { - response.message = err.to_string(); - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) - } - } + (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) } else { response.message = String::from("Request body is not valid"); (axum::http::StatusCode::BAD_REQUEST, axum::Json(response))