From 68f0dc7b24b00eca73f496a490266bcdf2a9b9e9 Mon Sep 17 00:00:00 2001 From: Priec Date: Sun, 12 Jul 2026 22:16:59 +0200 Subject: [PATCH] money without backwards compatibility --- common/build.rs | 8 - common/proto/table_definition.proto | 20 +- common/src/proto/descriptor.bin | Bin 90623 -> 89722 bytes common/src/proto/komp_ac.table_definition.rs | 196 +------------------ server | 2 +- 5 files changed, 9 insertions(+), 217 deletions(-) diff --git a/common/build.rs b/common/build.rs index 02cc87c..323746b 100644 --- a/common/build.rs +++ b/common/build.rs @@ -173,14 +173,6 @@ fn main() -> Result<(), Box> { ".komp_ac.table_definition.MoneyColumnOptions", "#[derive(serde::Serialize, serde::Deserialize)]", ) - .type_attribute( - ".komp_ac.table_definition.PostMoneyTableDefinitionRequest", - "#[derive(serde::Serialize, serde::Deserialize)]", - ) - .type_attribute( - ".komp_ac.table_definition.AddMoneyTableColumnsRequest", - "#[derive(serde::Serialize, serde::Deserialize)]", - ) .type_attribute( ".komp_ac.table_definition.TableDefinitionResponse", "#[derive(serde::Serialize, serde::Deserialize)]" diff --git a/common/proto/table_definition.proto b/common/proto/table_definition.proto index 5995529..fd0110a 100644 --- a/common/proto/table_definition.proto +++ b/common/proto/table_definition.proto @@ -14,16 +14,10 @@ service TableDefinition { // Also inserts metadata and default validation rules. Entirely transactional. rpc PostTableDefinition(PostTableDefinitionRequest) returns (TableDefinitionResponse); - // Creates a table using the money-aware definition contract. - rpc PostMoneyTableDefinition(PostMoneyTableDefinitionRequest) returns (TableDefinitionResponse); - // Appends new user-defined columns to an existing table. // Existing columns, links, and table logic are never changed by this call. rpc AddTableColumns(AddTableColumnsRequest) returns (TableDefinitionResponse); - // Adds columns using the money-aware definition contract. - rpc AddMoneyTableColumns(AddMoneyTableColumnsRequest) returns (TableDefinitionResponse); - // Lists all profiles (schemas) and their tables with declared dependencies. // This provides a tree-like overview of table relationships. rpc GetProfileTree(komp_ac.common.Empty) returns (ProfileTreeResponse); @@ -84,12 +78,9 @@ message PostTableDefinitionRequest { // like "public", "information_schema", or ones starting with "pg_". string profile_name = 5; -} + string base_currency = 6; + repeated MoneyColumnOptions money_columns = 7; -message PostMoneyTableDefinitionRequest { - PostTableDefinitionRequest definition = 1; - string base_currency = 2; - repeated MoneyColumnOptions money_columns = 3; } // Defines append-only column additions for an existing table. @@ -106,12 +97,9 @@ message AddTableColumnsRequest { // Optional indexes for the new columns only. repeated string indexes = 4; -} + repeated MoneyColumnOptions money_columns = 5; + string base_currency = 6; -message AddMoneyTableColumnsRequest { - AddTableColumnsRequest definition = 1; - repeated MoneyColumnOptions money_columns = 2; - string base_currency = 3; } enum MoneyRounding { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index 79df9f5e605136348aabe559671610b9fe9ad8d7..c1e613ab5eba961057dacc5f62947fbf3c6dcc8c 100644 GIT binary patch delta 5491 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 delta 6113 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 OfZ#oQtbKp{^uGa0%k6*w diff --git a/common/src/proto/komp_ac.table_definition.rs b/common/src/proto/komp_ac.table_definition.rs index 3649e2b..c7de2fa 100644 --- a/common/src/proto/komp_ac.table_definition.rs +++ b/common/src/proto/komp_ac.table_definition.rs @@ -42,15 +42,9 @@ pub struct PostTableDefinitionRequest { /// like "public", "information_schema", or ones starting with "pg\_". #[prost(string, tag = "5")] pub profile_name: ::prost::alloc::string::String, -} -#[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct PostMoneyTableDefinitionRequest { - #[prost(message, optional, tag = "1")] - pub definition: ::core::option::Option, - #[prost(string, tag = "2")] + #[prost(string, tag = "6")] pub base_currency: ::prost::alloc::string::String, - #[prost(message, repeated, tag = "3")] + #[prost(message, repeated, tag = "7")] pub money_columns: ::prost::alloc::vec::Vec, } /// Defines append-only column additions for an existing table. @@ -69,15 +63,9 @@ pub struct AddTableColumnsRequest { /// Optional indexes for the new columns only. #[prost(string, repeated, tag = "4")] pub indexes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct AddMoneyTableColumnsRequest { - #[prost(message, optional, tag = "1")] - pub definition: ::core::option::Option, - #[prost(message, repeated, tag = "2")] + #[prost(message, repeated, tag = "5")] pub money_columns: ::prost::alloc::vec::Vec, - #[prost(string, tag = "3")] + #[prost(string, tag = "6")] pub base_currency: ::prost::alloc::string::String, } #[derive(serde::Serialize, serde::Deserialize)] @@ -460,36 +448,6 @@ pub mod table_definition_client { ); self.inner.unary(req, path, codec).await } - /// Creates a table using the money-aware definition contract. - pub async fn post_money_table_definition( - &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/PostMoneyTableDefinition", - ); - let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "komp_ac.table_definition.TableDefinition", - "PostMoneyTableDefinition", - ), - ); - self.inner.unary(req, path, codec).await - } /// Appends new user-defined columns to an existing table. /// Existing columns, links, and table logic are never changed by this call. pub async fn add_table_columns( @@ -521,36 +479,6 @@ pub mod table_definition_client { ); self.inner.unary(req, path, codec).await } - /// Adds columns using the money-aware definition contract. - pub async fn add_money_table_columns( - &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/AddMoneyTableColumns", - ); - let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "komp_ac.table_definition.TableDefinition", - "AddMoneyTableColumns", - ), - ); - self.inner.unary(req, path, codec).await - } /// Lists all profiles (schemas) and their tables with declared dependencies. /// This provides a tree-like overview of table relationships. pub async fn get_profile_tree( @@ -758,14 +686,6 @@ pub mod table_definition_server { tonic::Response, tonic::Status, >; - /// Creates a table using the money-aware definition contract. - async fn post_money_table_definition( - &self, - request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; /// Appends new user-defined columns to an existing table. /// Existing columns, links, and table logic are never changed by this call. async fn add_table_columns( @@ -775,14 +695,6 @@ pub mod table_definition_server { tonic::Response, tonic::Status, >; - /// Adds columns using the money-aware definition contract. - async fn add_money_table_columns( - &self, - request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; /// Lists all profiles (schemas) and their tables with declared dependencies. /// This provides a tree-like overview of table relationships. async fn get_profile_tree( @@ -963,57 +875,6 @@ pub mod table_definition_server { }; Box::pin(fut) } - "/komp_ac.table_definition.TableDefinition/PostMoneyTableDefinition" => { - #[allow(non_camel_case_types)] - struct PostMoneyTableDefinitionSvc(pub Arc); - impl< - T: TableDefinition, - > tonic::server::UnaryService - for PostMoneyTableDefinitionSvc { - type Response = super::TableDefinitionResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request< - super::PostMoneyTableDefinitionRequest, - >, - ) -> Self::Future { - let inner = Arc::clone(&self.0); - let fut = async move { - ::post_money_table_definition( - &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 = PostMoneyTableDefinitionSvc(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/AddTableColumns" => { #[allow(non_camel_case_types)] struct AddTableColumnsSvc(pub Arc); @@ -1060,55 +921,6 @@ pub mod table_definition_server { }; Box::pin(fut) } - "/komp_ac.table_definition.TableDefinition/AddMoneyTableColumns" => { - #[allow(non_camel_case_types)] - struct AddMoneyTableColumnsSvc(pub Arc); - impl< - T: TableDefinition, - > tonic::server::UnaryService - for AddMoneyTableColumnsSvc { - type Response = super::TableDefinitionResponse; - 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 { - ::add_money_table_columns( - &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 = AddMoneyTableColumnsSvc(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/GetProfileTree" => { #[allow(non_camel_case_types)] struct GetProfileTreeSvc(pub Arc); diff --git a/server b/server index de3235a..591c4b0 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit de3235a13c2966c2c4ffab356d7d9a3aaa5ce05a +Subproject commit 591c4b087569f23977772071ea36f73acb752d73