Adding code for endpoint
Rust Build / Check (pull_request) Failing after 32s
Rust Build / Test Suite (pull_request) Failing after 34s
Rust Build / Rustfmt (pull_request) Failing after 1m9s
Rust Build / build (pull_request) Failing after 54s
Rust Build / Clippy (pull_request) Failing after 1m5s

This commit is contained in:
2026-06-11 13:03:14 -04:00
parent 4e8c4125fe
commit 5bbc1acd27
+50
View File
@@ -18,6 +18,26 @@ pub mod request {
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub lastname: Option<String>, pub lastname: Option<String>,
} }
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
pub struct RegisterServiceUserRequest {
pub username: String,
pub passphrase: String,
}
impl RegisterServiceUserRequest {
pub fn is_empty(&self) -> (bool, Option<String>) {
if self.username.is_empty() && self.passphrase.is_empty() {
(true, Some(String::from("Username and Passphrase are empty")))
} else if self.username.is_empty() {
(true, Some(String::from("Username is empty")))
} else if self.passphrase.is_empty() {
(true, Some(String::from("Passphrase is empty")))
} else {
(false, None)
}
}
}
} }
pub mod response { pub mod response {
@@ -28,6 +48,12 @@ pub mod response {
pub message: String, pub message: String,
pub data: Vec<textsender_models::user::User>, pub data: Vec<textsender_models::user::User>,
} }
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
pub struct RegisterServiceUserResponse {
pub message: String,
pub data: Vec<textsender_models::user::ServiceUser>
}
} }
/// Endpoint to register a user /// Endpoint to register a user
@@ -160,3 +186,27 @@ async fn is_registration_enabled() -> Result<bool, std::io::Error> {
)) ))
} }
} }
/// Endpoint to register a service user
pub async fn register_service_user(
axum::Extension(pool): axum::Extension<sqlx::PgPool>,
Json(payload): Json<request::RegisterServiceUserRequest>,
) -> (axum::http::StatusCode, axum::Json<response::RegisterServiceUserResponse>) {
let mut resp = response::RegisterServiceUserResponse {
..Default::default()
};
let (res, msg) = payload.is_empty();
if res {
resp.message = msg.unwrap();
(axum::http::StatusCode::BAD_REQUEST, axum::Json(resp))
} else {
match repo::salt::get_with_username(&pool, &payload.username) {
Ok(service_user) => {
}
Err(err) => {
}
}
(axum::http::StatusCode::NOT_IMPLEMENTED, axum::Json(resp))
}
}