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 dbfcbb0..031a899 100644 Binary files a/common/src/proto/descriptor.bin and b/common/src/proto/descriptor.bin differ 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