From 09dc594afe4f695d6eea012783cc4475788b1670 Mon Sep 17 00:00:00 2001 From: Filipriec Date: Tue, 1 Sep 2026 10:50:39 +0200 Subject: [PATCH] aliasing when changing one field doesnt drop others --- common/build.rs | 4 ++++ common/proto/table_validation.proto | 7 +++++++ common/src/proto/descriptor.bin | Bin 219529 -> 227570 bytes common/src/proto/komp_ac.table_validation.rs | 6 ++++++ komp-app/src/grpc.rs | 1 + server | 2 +- web/src/pages/add_validation/state.rs | 1 + 7 files changed, 20 insertions(+), 1 deletion(-) diff --git a/common/build.rs b/common/build.rs index 938f402e..fffebf01 100644 --- a/common/build.rs +++ b/common/build.rs @@ -38,6 +38,10 @@ fn main() -> Result<(), Box> { ".komp_ac.table_validation.FieldValidation.locked", "#[serde(default)]", ) + .field_attribute( + ".komp_ac.table_validation.UpdateFieldValidationRequest.update_mask", + "#[serde(skip)]", + ) .field_attribute( ".komp_ac.table_definition.ColumnDefinition.boolean_ledger", "#[serde(default, alias = \"boolean_ledger_operator\")]", diff --git a/common/proto/table_validation.proto b/common/proto/table_validation.proto index c6187bc1..d449f1e0 100644 --- a/common/proto/table_validation.proto +++ b/common/proto/table_validation.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package komp_ac.table_validation; +import "google/protobuf/field_mask.proto"; + // This proto is the canonical server-side storage and distribution contract for // client validation configuration. // @@ -189,6 +191,11 @@ message UpdateFieldValidationRequest { string tableName = 2; string dataKey = 3; FieldValidation validation = 4; + + // Omitted keeps the legacy full-replacement behavior. Otherwise, only the + // selected FieldValidation properties are changed; selecting an absent + // message property deliberately removes it. + google.protobuf.FieldMask update_mask = 5; } message UpdateFieldValidationResponse { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index 2e2427d9b7c280df490af7c428f6bca2225239bb..d5dd41f1e9af0fb61610d6ed3adf706bf08e7126 100644 GIT binary patch delta 14294 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 delta 7924 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 OrY|16JT2}2hyMqh^ZuOx diff --git a/common/src/proto/komp_ac.table_validation.rs b/common/src/proto/komp_ac.table_validation.rs index 9069662f..5401c5a5 100644 --- a/common/src/proto/komp_ac.table_validation.rs +++ b/common/src/proto/komp_ac.table_validation.rs @@ -159,6 +159,12 @@ pub struct UpdateFieldValidationRequest { pub data_key: ::prost::alloc::string::String, #[prost(message, optional, tag = "4")] pub validation: ::core::option::Option, + /// Omitted keeps the legacy full-replacement behavior. Otherwise, only the + /// selected FieldValidation properties are changed; selecting an absent + /// message property deliberately removes it. + #[prost(message, optional, tag = "5")] + #[serde(skip)] + pub update_mask: ::core::option::Option<::prost_types::FieldMask>, } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] diff --git a/komp-app/src/grpc.rs b/komp-app/src/grpc.rs index a9183764..544a1c2f 100644 --- a/komp-app/src/grpc.rs +++ b/komp-app/src/grpc.rs @@ -257,6 +257,7 @@ impl GrpcClient { table_name, data_key, validation: Some(validation), + update_mask: None, }; let request = self.authenticated_request(req)?; let resp = self diff --git a/server b/server index 825a5bcf..7bb3706e 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 825a5bcf321655ba3821718eae817982f1e40e5d +Subproject commit 7bb3706ec6e670e1e7d6495d2f699d50a9bc41e3 diff --git a/web/src/pages/add_validation/state.rs b/web/src/pages/add_validation/state.rs index 3cd3a17c..d3c770a1 100644 --- a/web/src/pages/add_validation/state.rs +++ b/web/src/pages/add_validation/state.rs @@ -109,6 +109,7 @@ impl ValidationForm { table_name, data_key: data_key.clone(), validation: Some(self.validation(locale, data_key)?), + update_mask: None, }) }