Fix version name can be empty string (#537)
This commit is contained in:
parent
a2eb0bf9fe
commit
3c1e3cd38e
@ -140,7 +140,10 @@ fn default_requested_status() -> ProjectStatus {
|
||||
|
||||
#[derive(Serialize, Deserialize, Validate, Clone)]
|
||||
struct ProjectCreateData {
|
||||
#[validate(length(min = 3, max = 64))]
|
||||
#[validate(
|
||||
length(min = 3, max = 64),
|
||||
custom(function = "crate::util::validate::validate_name")
|
||||
)]
|
||||
#[serde(alias = "mod_name")]
|
||||
/// The title or name of the project.
|
||||
pub title: String,
|
||||
|
||||
@ -289,7 +289,10 @@ pub async fn dependency_list(
|
||||
/// A project returned from the API
|
||||
#[derive(Serialize, Deserialize, Validate)]
|
||||
pub struct EditProject {
|
||||
#[validate(length(min = 3, max = 64))]
|
||||
#[validate(
|
||||
length(min = 3, max = 64),
|
||||
custom(function = "crate::util::validate::validate_name")
|
||||
)]
|
||||
pub title: Option<String>,
|
||||
#[validate(length(min = 3, max = 256))]
|
||||
pub description: Option<String>,
|
||||
@ -441,7 +444,7 @@ pub async fn project_edit(
|
||||
SET title = $1
|
||||
WHERE (id = $2)
|
||||
",
|
||||
title,
|
||||
title.trim(),
|
||||
id as database::models::ids::ProjectId,
|
||||
)
|
||||
.execute(&mut *transaction)
|
||||
|
||||
@ -41,7 +41,10 @@ pub struct InitialVersionData {
|
||||
regex = "crate::util::validate::RE_URL_SAFE"
|
||||
)]
|
||||
pub version_number: String,
|
||||
#[validate(length(min = 1, max = 64))]
|
||||
#[validate(
|
||||
length(min = 1, max = 64),
|
||||
custom(function = "crate::util::validate::validate_name")
|
||||
)]
|
||||
#[serde(alias = "name")]
|
||||
pub version_title: String,
|
||||
#[validate(length(max = 65536))]
|
||||
|
||||
@ -216,7 +216,10 @@ pub async fn version_get(
|
||||
|
||||
#[derive(Serialize, Deserialize, Validate)]
|
||||
pub struct EditVersion {
|
||||
#[validate(length(min = 1, max = 64))]
|
||||
#[validate(
|
||||
length(min = 1, max = 64),
|
||||
custom(function = "crate::util::validate::validate_name")
|
||||
)]
|
||||
pub name: Option<String>,
|
||||
#[validate(
|
||||
length(min = 1, max = 32),
|
||||
@ -309,7 +312,7 @@ pub async fn version_edit(
|
||||
SET name = $1
|
||||
WHERE (id = $2)
|
||||
",
|
||||
name,
|
||||
name.trim(),
|
||||
id as database::models::ids::VersionId,
|
||||
)
|
||||
.execute(&mut *transaction)
|
||||
|
||||
@ -97,3 +97,30 @@ pub fn validate_url(value: &str) -> Result<(), validator::ValidationError> {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn validate_name(value: &str) -> Result<(), validator::ValidationError> {
|
||||
if value.trim().is_empty() {
|
||||
return Err(validator::ValidationError::new(
|
||||
"Name cannot contain only whitespace.",
|
||||
));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn validate_name_with_valid_input() {
|
||||
let result = validate_name("My Test mod");
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn validate_name_with_invalid_input_returns_error() {
|
||||
let result = validate_name(" ");
|
||||
assert!(result.is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user