From 7da9b6fe1eab94a8e82a8142beb9da43113000fe Mon Sep 17 00:00:00 2001 From: Priec Date: Wed, 29 Jul 2026 19:38:41 +0200 Subject: [PATCH] removing recomputation --- client | 2 +- common/build.rs | 4 ---- common/proto/table_definition.proto | 4 +--- common/proto/table_script.proto | 3 +-- common/proto/table_structure.proto | 2 +- common/proto/tables_data.proto | 15 +++--------- common/src/proto/descriptor.bin | Bin 135795 -> 134570 bytes common/src/proto/komp_ac.table_definition.rs | 5 ---- common/src/proto/komp_ac.table_script.rs | 3 --- common/src/proto/komp_ac.table_structure.rs | 4 ---- common/src/proto/komp_ac.tables_data.rs | 24 +++---------------- graphs/src/pages/add_table/state.rs | 4 +--- graphs/src/pages/add_table/ui.rs | 2 +- graphs/src/pages/admin/admin/loader.rs | 1 - graphs/src/pages/admin/admin/state.rs | 1 - graphs/src/pages/admin/admin/ui.rs | 3 --- server | 2 +- 17 files changed, 13 insertions(+), 66 deletions(-) diff --git a/client b/client index 7a63161..71b5cff 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 7a63161ad87165f68913b1e80727a2ca8840c266 +Subproject commit 71b5cff16d9a51543b964eee23b2d311584b6916 diff --git a/common/build.rs b/common/build.rs index 0074096..a52fc88 100644 --- a/common/build.rs +++ b/common/build.rs @@ -157,10 +157,6 @@ fn main() -> Result<(), Box> { ".komp_ac.table_definition.ColumnDefinition", "#[derive(serde::Serialize, serde::Deserialize)]", ) - .field_attribute( - ".komp_ac.table_definition.ColumnDefinition.recompute_on_dependency_change", - "#[serde(default)]", - ) .type_attribute( ".komp_ac.table_definition.TableLink", "#[derive(serde::Serialize, serde::Deserialize)]" diff --git a/common/proto/table_definition.proto b/common/proto/table_definition.proto index 5147ed5..9f6adbc 100644 --- a/common/proto/table_definition.proto +++ b/common/proto/table_definition.proto @@ -197,9 +197,7 @@ message ColumnDefinition { // MONEY rounding applied before a value is stored. MoneyRounding rounding = 4; - // When true, the submitted script result is validated normally and the - // stored value is also refreshed when one of its dependencies later changes. - bool recompute_on_dependency_change = 5; + reserved 5; } // Response after table creation (success + DDL preview). diff --git a/common/proto/table_script.proto b/common/proto/table_script.proto index 241c403..bf54609 100644 --- a/common/proto/table_script.proto +++ b/common/proto/table_script.proto @@ -167,8 +167,7 @@ message StoredTableScript { string description = 5; // Complete allowlist of data inputs that may be exposed to this script. repeated ScriptDependency dependencies = 6; - // Whether changes to dependency rows trigger authoritative server propagation. - bool recompute_on_dependency_change = 7; + reserved 7; } message ScriptDependency { diff --git a/common/proto/table_structure.proto b/common/proto/table_structure.proto index db60a16..e533265 100644 --- a/common/proto/table_structure.proto +++ b/common/proto/table_structure.proto @@ -75,7 +75,7 @@ message TableColumn { // True for a user-defined column whose logic should be recomputed whenever // one of its dependencies changes. False for system and foreign-key columns. - bool recompute_on_dependency_change = 5; + reserved 5; // True when the server created this as a companion of another logical column. bool generated = 6; diff --git a/common/proto/tables_data.proto b/common/proto/tables_data.proto index 71d7cc2..065d95a 100644 --- a/common/proto/tables_data.proto +++ b/common/proto/tables_data.proto @@ -137,8 +137,7 @@ message PostTableDataResponse { // The id of the inserted row. int64 inserted_id = 3; - // Rows whose stored script values changed through dependency propagation. - repeated RecomputedRow recomputed_rows = 4; + reserved 4; // Revision committed for the inserted row. int64 row_revision = 5; @@ -213,19 +212,12 @@ message PutTableDataResponse { // The id of the updated row. int64 updated_id = 3; - // Rows whose stored script values changed through dependency propagation. - repeated RecomputedRow recomputed_rows = 4; + reserved 4; // Revision committed for the updated row. int64 row_revision = 5; } -message RecomputedRow { - string table_name = 1; - int64 row_id = 2; - int64 row_revision = 3; -} - // Soft-delete a single row. message DeleteTableDataRequest { // Required. Profile (schema) name. @@ -246,8 +238,7 @@ message DeleteTableDataResponse { // True if a row was marked deleted (id existed and was not already deleted). bool success = 1; - // Rows whose stored script values changed through dependency propagation. - repeated RecomputedRow recomputed_rows = 2; + reserved 2; } // Fetch a single non-deleted row by id. diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index dbfcbb082684e6cda0c4edaef3a27dfd6ee54c62..031a8996b1d6b03d285e75341729d690f2627473 100644 GIT binary patch delta 8249 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 diff --git a/common/src/proto/komp_ac.table_definition.rs b/common/src/proto/komp_ac.table_definition.rs index c51a65e..4c8d4d0 100644 --- a/common/src/proto/komp_ac.table_definition.rs +++ b/common/src/proto/komp_ac.table_definition.rs @@ -166,11 +166,6 @@ pub struct ColumnDefinition { /// MONEY rounding applied before a value is stored. #[prost(enumeration = "MoneyRounding", tag = "4")] pub rounding: i32, - /// When true, the submitted script result is validated normally and the - /// stored value is also refreshed when one of its dependencies later changes. - #[prost(bool, tag = "5")] - #[serde(default)] - pub recompute_on_dependency_change: bool, } /// Response after table creation (success + DDL preview). #[derive(serde::Serialize, serde::Deserialize)] diff --git a/common/src/proto/komp_ac.table_script.rs b/common/src/proto/komp_ac.table_script.rs index 3574612..1b61e5e 100644 --- a/common/src/proto/komp_ac.table_script.rs +++ b/common/src/proto/komp_ac.table_script.rs @@ -108,9 +108,6 @@ pub struct StoredTableScript { /// Complete allowlist of data inputs that may be exposed to this script. #[prost(message, repeated, tag = "6")] pub dependencies: ::prost::alloc::vec::Vec, - /// Whether changes to dependency rows trigger authoritative server propagation. - #[prost(bool, tag = "7")] - pub recompute_on_dependency_change: bool, } #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct ScriptDependency { diff --git a/common/src/proto/komp_ac.table_structure.rs b/common/src/proto/komp_ac.table_structure.rs index eb89f06..5a1a591 100644 --- a/common/src/proto/komp_ac.table_structure.rs +++ b/common/src/proto/komp_ac.table_structure.rs @@ -55,10 +55,6 @@ pub struct TableColumn { /// Typically true for the "id" column created by the system. #[prost(bool, tag = "4")] pub is_primary_key: bool, - /// True for a user-defined column whose logic should be recomputed whenever - /// one of its dependencies changes. False for system and foreign-key columns. - #[prost(bool, tag = "5")] - pub recompute_on_dependency_change: bool, /// True when the server created this as a companion of another logical column. #[prost(bool, tag = "6")] pub generated: bool, diff --git a/common/src/proto/komp_ac.tables_data.rs b/common/src/proto/komp_ac.tables_data.rs index 5c26ab1..e2fc263 100644 --- a/common/src/proto/komp_ac.tables_data.rs +++ b/common/src/proto/komp_ac.tables_data.rs @@ -48,7 +48,7 @@ pub struct PostTableDataRequest { >, } /// Insert response. -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct PostTableDataResponse { /// True if the insert succeeded. #[prost(bool, tag = "1")] @@ -59,9 +59,6 @@ pub struct PostTableDataResponse { /// The id of the inserted row. #[prost(int64, tag = "3")] pub inserted_id: i64, - /// Rows whose stored script values changed through dependency propagation. - #[prost(message, repeated, tag = "4")] - pub recomputed_rows: ::prost::alloc::vec::Vec, /// Revision committed for the inserted row. #[prost(int64, tag = "5")] pub row_revision: i64, @@ -135,7 +132,7 @@ pub struct PutTableDataRequest { pub expected_revision: i64, } /// Update response. -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct PutTableDataResponse { /// True if the update succeeded (or no-op on empty data). #[prost(bool, tag = "1")] @@ -146,22 +143,10 @@ pub struct PutTableDataResponse { /// The id of the updated row. #[prost(int64, tag = "3")] pub updated_id: i64, - /// Rows whose stored script values changed through dependency propagation. - #[prost(message, repeated, tag = "4")] - pub recomputed_rows: ::prost::alloc::vec::Vec, /// Revision committed for the updated row. #[prost(int64, tag = "5")] pub row_revision: i64, } -#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] -pub struct RecomputedRow { - #[prost(string, tag = "1")] - pub table_name: ::prost::alloc::string::String, - #[prost(int64, tag = "2")] - pub row_id: i64, - #[prost(int64, tag = "3")] - pub row_revision: i64, -} /// Soft-delete a single row. #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct DeleteTableDataRequest { @@ -179,14 +164,11 @@ pub struct DeleteTableDataRequest { pub expected_revision: i64, } /// Soft-delete response. -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] pub struct DeleteTableDataResponse { /// True if a row was marked deleted (id existed and was not already deleted). #[prost(bool, tag = "1")] pub success: bool, - /// Rows whose stored script values changed through dependency propagation. - #[prost(message, repeated, tag = "2")] - pub recomputed_rows: ::prost::alloc::vec::Vec, } /// Fetch a single non-deleted row by id. #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] diff --git a/graphs/src/pages/add_table/state.rs b/graphs/src/pages/add_table/state.rs index 3fda684..110528d 100644 --- a/graphs/src/pages/add_table/state.rs +++ b/graphs/src/pages/add_table/state.rs @@ -74,7 +74,6 @@ impl CreateTableForm { name: name.to_string(), field_type: field_type.to_string(), rounding: rounding.into(), - recompute_on_dependency_change: flags.contains(&"recompute"), }); } if columns.is_empty() { @@ -144,7 +143,7 @@ mod tests { let request = CreateTableForm { profile_name: "accounting".into(), table_name: "invoice".into(), - columns: "number: text:indexed\namount: money:half-up,recompute".into(), + columns: "number: text:indexed\namount: money:half-up".into(), required_links: "customer".into(), base_currency: "eur".into(), row_display_columns: "number, amount".into(), @@ -158,6 +157,5 @@ mod tests { assert!(request.links[0].required); assert_eq!(request.base_currency, "EUR"); assert_eq!(request.row_display_columns, vec!["number", "amount"]); - assert!(request.columns[1].recompute_on_dependency_change); } } diff --git a/graphs/src/pages/add_table/ui.rs b/graphs/src/pages/add_table/ui.rs index 0f099e0..ae6f3f9 100644 --- a/graphs/src/pages/add_table/ui.rs +++ b/graphs/src/pages/add_table/ui.rs @@ -21,7 +21,7 @@ pub(crate) fn render_page(page: &AddTablePageState) -> String { .map(render_submission_error) .unwrap_or_default(); format!( - "Add table
Komp Accounting
← Admin panel

Table definition

Add table

Create a table through the existing gRPC table-definition service.

{error}
Cancel
", + "Add table
Komp Accounting
← Admin panel

Table definition

Add table

Create a table through the existing gRPC table-definition service.

{error}
Cancel
", crate::escape_html(&page.form.table_name), crate::escape_html(&page.form.columns), crate::escape_html(&page.form.indexed_columns), diff --git a/graphs/src/pages/admin/admin/loader.rs b/graphs/src/pages/admin/admin/loader.rs index 31875b0..95ebfb8 100644 --- a/graphs/src/pages/admin/admin/loader.rs +++ b/graphs/src/pages/admin/admin/loader.rs @@ -113,7 +113,6 @@ pub(crate) async fn load_admin_page( data_type: column.data_type.clone(), nullable: column.is_nullable, primary_key: column.is_primary_key, - recompute_on_dependency_change: column.recompute_on_dependency_change, }) .collect() } diff --git a/graphs/src/pages/admin/admin/state.rs b/graphs/src/pages/admin/admin/state.rs index 18e1c53..668b702 100644 --- a/graphs/src/pages/admin/admin/state.rs +++ b/graphs/src/pages/admin/admin/state.rs @@ -35,7 +35,6 @@ pub(crate) struct ColumnView { pub data_type: String, pub nullable: bool, pub primary_key: bool, - pub recompute_on_dependency_change: bool, } #[derive(Debug)] diff --git a/graphs/src/pages/admin/admin/ui.rs b/graphs/src/pages/admin/admin/ui.rs index f89d854..fe7feec 100644 --- a/graphs/src/pages/admin/admin/ui.rs +++ b/graphs/src/pages/admin/admin/ui.rs @@ -95,9 +95,6 @@ fn render_columns(page: &AdminPageState) -> String { } else { flags.push("required"); } - if column.recompute_on_dependency_change { - flags.push("recomputed"); - } format!( "
{}{}{}
", crate::escape_html(&column.name), diff --git a/server b/server index df7f5aa..b44238e 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit df7f5aaf95bd44633998d635c758aef698230c50 +Subproject commit b44238ec3b3cca9e5dcf2367767fdba64db41f82