Lines
0 %
Functions
Branches
100 %
use axum::Json;
use axum::response::IntoResponse;
use serde::Deserialize;
use crate::pages::HtmlTemplate;
use crate::pages::validation::feedback::ValidationFeedback;
#[derive(Deserialize)]
pub struct SymbolValidation {
symbol: Option<String>,
}
pub async fn validate_symbol(Json(form): Json<SymbolValidation>) -> impl IntoResponse {
let symbol = match form.symbol {
Some(s) => s,
None => return HtmlTemplate(ValidationFeedback::error(t!("Symbol is required"))),
};
if symbol.is_empty() {
return HtmlTemplate(ValidationFeedback::error(t!("Symbol cannot be empty")));
if symbol.len() > 20 {
return HtmlTemplate(ValidationFeedback::error(
"Symbol cannot exceed 20 characters",
));
HtmlTemplate(ValidationFeedback::success(t!("Ok")))
pub struct FullnameValidation {
name: Option<String>,
pub async fn validate_name(Json(form): Json<FullnameValidation>) -> impl IntoResponse {
let name = match form.name {
Some(n) => n,
None => return HtmlTemplate(ValidationFeedback::notice(t!("Full name is recommended"))),
if name.is_empty() {
return HtmlTemplate(ValidationFeedback::notice(t!("Full name is recommended")));
if name.len() < 2 {
return HtmlTemplate(ValidationFeedback::error(t!("Full name is too short")));
if name.len() > 100 {
return HtmlTemplate(ValidationFeedback::error(t!("Full name is too long")));