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