validation2 I dont know if its correct???
This commit is contained in:
@@ -12,6 +12,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
".komp_ac.table_validation.CharacterLimits",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DisplayMask",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.TableValidationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
|
||||
@@ -23,9 +23,10 @@ message FieldValidation {
|
||||
CharacterLimits limits = 10;
|
||||
// Future expansion:
|
||||
// PatternRules pattern = 11;
|
||||
// DisplayMask mask = 12;
|
||||
DisplayMask mask = 3;
|
||||
// ExternalValidation external = 13;
|
||||
// CustomFormatter formatter = 14;
|
||||
bool required = 4;
|
||||
}
|
||||
|
||||
// Character length counting mode
|
||||
@@ -49,6 +50,13 @@ message CharacterLimits {
|
||||
CountMode countMode = 4; // defaults to CHARS if unspecified
|
||||
}
|
||||
|
||||
// Mask for pretty display
|
||||
message DisplayMask {
|
||||
string pattern = 1; // e.g., "(###) ###-####" or "####-##-##"
|
||||
string input_char = 2; // e.g., "#"
|
||||
optional string template_char = 3; // e.g., "_"
|
||||
}
|
||||
|
||||
// Service to fetch validations for a table
|
||||
service TableValidationService {
|
||||
rpc GetTableValidation(GetTableValidationRequest)
|
||||
|
||||
Binary file not shown.
@@ -23,14 +23,16 @@ pub struct FieldValidation {
|
||||
#[prost(string, tag = "1")]
|
||||
pub data_key: ::prost::alloc::string::String,
|
||||
/// Current: only CharacterLimits. More rules can be added later.
|
||||
///
|
||||
/// Future expansion:
|
||||
/// PatternRules pattern = 11;
|
||||
/// DisplayMask mask = 12;
|
||||
/// ExternalValidation external = 13;
|
||||
/// CustomFormatter formatter = 14;
|
||||
#[prost(message, optional, tag = "10")]
|
||||
pub limits: ::core::option::Option<CharacterLimits>,
|
||||
/// Future expansion:
|
||||
/// PatternRules pattern = 11;
|
||||
#[prost(message, optional, tag = "3")]
|
||||
pub mask: ::core::option::Option<DisplayMask>,
|
||||
/// ExternalValidation external = 13;
|
||||
/// CustomFormatter formatter = 14;
|
||||
#[prost(bool, tag = "4")]
|
||||
pub required: bool,
|
||||
}
|
||||
/// Character limit validation (Validation 1)
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
@@ -49,6 +51,20 @@ pub struct CharacterLimits {
|
||||
#[prost(enumeration = "CountMode", tag = "4")]
|
||||
pub count_mode: i32,
|
||||
}
|
||||
/// Mask for pretty display
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct DisplayMask {
|
||||
/// e.g., "(###) ###-####" or "####-##-##"
|
||||
#[prost(string, tag = "1")]
|
||||
pub pattern: ::prost::alloc::string::String,
|
||||
/// e.g., "#"
|
||||
#[prost(string, tag = "2")]
|
||||
pub input_char: ::prost::alloc::string::String,
|
||||
/// e.g., "_"
|
||||
#[prost(string, optional, tag = "3")]
|
||||
pub template_char: ::core::option::Option<::prost::alloc::string::String>,
|
||||
}
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct UpdateFieldValidationRequest {
|
||||
|
||||
@@ -40,12 +40,16 @@ impl TableValidationService for TableValidationSvc {
|
||||
// Set the data_key from the database row
|
||||
fv.data_key = r.data_key;
|
||||
|
||||
// Skip if limits are all zero
|
||||
if let Some(lims) = &fv.limits {
|
||||
if lims.min == 0 && lims.max == 0 && lims.warn_at.is_none() {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// Keep entries that have either meaningful limits or a mask
|
||||
let has_meaningful_limits = fv
|
||||
.limits
|
||||
.as_ref()
|
||||
.map_or(false, |l| l.min > 0 || l.max > 0 || l.warn_at.is_some());
|
||||
let has_mask = fv.mask.is_some();
|
||||
if !has_meaningful_limits && !has_mask {
|
||||
continue;
|
||||
}
|
||||
|
||||
fields_out.push(fv);
|
||||
}
|
||||
Err(e) => {
|
||||
|
||||
Reference in New Issue
Block a user