From 315cbe0c9cfb908ed0cad5646e85790d55c88e95 Mon Sep 17 00:00:00 2001 From: Priec Date: Thu, 10 Sep 2026 21:12:30 +0200 Subject: [PATCH] fix custom column labels being lost on read-only module tables --- client-gui2 | 2 +- common/proto/table_definition.proto | 21 ++++ common/src/proto/descriptor.bin | Bin 263219 -> 264740 bytes common/src/proto/komp_ac.table_definition.rs | 117 +++++++++++++++++++ server | 2 +- tui-pages | 2 +- 6 files changed, 141 insertions(+), 3 deletions(-) diff --git a/client-gui2 b/client-gui2 index 251a1386..7e56fbea 160000 --- a/client-gui2 +++ b/client-gui2 @@ -1 +1 @@ -Subproject commit 251a1386ba8d00afe59857754218fdcfb6a458b8 +Subproject commit 7e56fbead71f70874ce3f0a9ca41024850288004 diff --git a/common/proto/table_definition.proto b/common/proto/table_definition.proto index 7bd7b452..40f5bf67 100644 --- a/common/proto/table_definition.proto +++ b/common/proto/table_definition.proto @@ -88,6 +88,9 @@ service TableDefinition { // is rejected while an active row has no value for the column. rpc SetColumnRequired(SetColumnRequiredRequest) returns (SetColumnRequiredResponse); + // Clear selected profile overrides and apply the current module defaults atomically. + rpc ResetModuleDefaults(ResetModuleDefaultsRequest) returns (ResetModuleDefaultsResponse); + // Replaces the optional user-visible aliases for a fixed-option column. // Stored values remain stable machine values and scripts never depend on labels. rpc SetColumnOptionAliases(SetColumnOptionAliasesRequest) returns (SetColumnOptionAliasesResponse); @@ -674,6 +677,24 @@ enum CatalogFeature { CATALOG_FEATURE_REPLACE_DEFINITION = 12; CATALOG_FEATURE_INDEXES = 13; CATALOG_FEATURE_DELETE_TABLE = 14; + CATALOG_FEATURE_RESET_MODULE_DEFAULTS = 15; +} + +message ResetModuleDefaultsRequest { + string profile_name = 1; + string table_name = 2; + // Stable column IDs, not aliases. Only these label overrides are cleared. + repeated int64 column_alias_ids = 3; + // Only these required-setting overrides are cleared. + repeated int64 column_required_ids = 4; + bool reset_row_display_columns = 5; + int64 expected_row_version = 6; +} + +message ResetModuleDefaultsResponse { + bool success = 1; + // Reload table details to obtain the effective settings after the reset. + int64 row_version = 2; } // Server-owned behavior for one logical column returned in table details. diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index e50d4b008f6d68c182321d7842f9b5b122037b9d..eb6c1214ca0f3b81ef14621effe83d38400516b0 100644 GIT binary patch delta 20847 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 JTcU0K{ued$l-mFR delta 19555 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, } +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct ResetModuleDefaultsRequest { + #[prost(string, tag = "1")] + pub profile_name: ::prost::alloc::string::String, + #[prost(string, tag = "2")] + pub table_name: ::prost::alloc::string::String, + /// Stable column IDs, not aliases. Only these label overrides are cleared. + #[prost(int64, repeated, tag = "3")] + pub column_alias_ids: ::prost::alloc::vec::Vec, + /// Only these required-setting overrides are cleared. + #[prost(int64, repeated, tag = "4")] + pub column_required_ids: ::prost::alloc::vec::Vec, + #[prost(bool, tag = "5")] + pub reset_row_display_columns: bool, + #[prost(int64, tag = "6")] + pub expected_row_version: i64, +} +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] +pub struct ResetModuleDefaultsResponse { + #[prost(bool, tag = "1")] + pub success: bool, + /// Reload table details to obtain the effective settings after the reset. + #[prost(int64, tag = "2")] + pub row_version: i64, +} /// Server-owned behavior for one logical column returned in table details. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -1259,6 +1286,7 @@ pub enum CatalogFeature { ReplaceDefinition = 12, Indexes = 13, DeleteTable = 14, + ResetModuleDefaults = 15, } impl CatalogFeature { /// String value of the enum field names used in the ProtoBuf definition. @@ -1282,6 +1310,7 @@ impl CatalogFeature { Self::ReplaceDefinition => "CATALOG_FEATURE_REPLACE_DEFINITION", Self::Indexes => "CATALOG_FEATURE_INDEXES", Self::DeleteTable => "CATALOG_FEATURE_DELETE_TABLE", + Self::ResetModuleDefaults => "CATALOG_FEATURE_RESET_MODULE_DEFAULTS", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -1302,6 +1331,7 @@ impl CatalogFeature { "CATALOG_FEATURE_REPLACE_DEFINITION" => Some(Self::ReplaceDefinition), "CATALOG_FEATURE_INDEXES" => Some(Self::Indexes), "CATALOG_FEATURE_DELETE_TABLE" => Some(Self::DeleteTable), + "CATALOG_FEATURE_RESET_MODULE_DEFAULTS" => Some(Self::ResetModuleDefaults), _ => None, } } @@ -2083,6 +2113,36 @@ pub mod table_definition_client { ); self.inner.unary(req, path, codec).await } + /// Clear selected profile overrides and apply the current module defaults atomically. + pub async fn reset_module_defaults( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::unknown( + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/komp_ac.table_definition.TableDefinition/ResetModuleDefaults", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "komp_ac.table_definition.TableDefinition", + "ResetModuleDefaults", + ), + ); + self.inner.unary(req, path, codec).await + } /// Replaces the optional user-visible aliases for a fixed-option column. /// Stored values remain stable machine values and scripts never depend on labels. pub async fn set_column_option_aliases( @@ -2407,6 +2467,14 @@ pub mod table_definition_server { tonic::Response, tonic::Status, >; + /// Clear selected profile overrides and apply the current module defaults atomically. + async fn reset_module_defaults( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; /// Replaces the optional user-visible aliases for a fixed-option column. /// Stored values remain stable machine values and scripts never depend on labels. async fn set_column_option_aliases( @@ -3542,6 +3610,55 @@ pub mod table_definition_server { }; Box::pin(fut) } + "/komp_ac.table_definition.TableDefinition/ResetModuleDefaults" => { + #[allow(non_camel_case_types)] + struct ResetModuleDefaultsSvc(pub Arc); + impl< + T: TableDefinition, + > tonic::server::UnaryService + for ResetModuleDefaultsSvc { + type Response = super::ResetModuleDefaultsResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::reset_module_defaults( + &inner, + request, + ) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = ResetModuleDefaultsSvc(inner); + let codec = tonic_prost::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/komp_ac.table_definition.TableDefinition/SetColumnOptionAliases" => { #[allow(non_camel_case_types)] struct SetColumnOptionAliasesSvc(pub Arc); diff --git a/server b/server index 8d7fba32..43375b77 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 8d7fba32ddc2aee4d164931708cbf026b47514b0 +Subproject commit 43375b776d609cffe4f5d7752c4e839b8b862050 diff --git a/tui-pages b/tui-pages index 2e784b63..a135d67c 160000 --- a/tui-pages +++ b/tui-pages @@ -1 +1 @@ -Subproject commit 2e784b636e3df885b31dab802c046f525f22b512 +Subproject commit a135d67c79f3f4562c994612014450ac2f0fbbfa