using unified system
This commit is contained in:
257
common/build.rs
257
common/build.rs
@@ -1,235 +1,58 @@
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let serde = "#[derive(serde::Serialize, serde::Deserialize)]";
|
||||
tonic_prost_build::configure()
|
||||
.build_server(true)
|
||||
.file_descriptor_set_path("src/proto/descriptor.bin")
|
||||
.out_dir("src/proto")
|
||||
// Derive serde for the messages
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.FieldValidation",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
// These packages cross the native-client boundary. Keeping the derives
|
||||
// here makes the root common crate usable by TUI and Tauri alike.
|
||||
.type_attribute(".komp_ac.accounting", serde)
|
||||
.type_attribute(".komp_ac.analytics", serde)
|
||||
.type_attribute(".komp_ac.auth", serde)
|
||||
.type_attribute(".komp_ac.document_data", serde)
|
||||
.type_attribute(".komp_ac.ecb", serde)
|
||||
.type_attribute(".komp_ac.exchange_rates", serde)
|
||||
.type_attribute(".komp_ac.search", serde)
|
||||
.type_attribute(".komp_ac.search2", serde)
|
||||
.type_attribute(".komp_ac.table_definition", serde)
|
||||
.type_attribute(".komp_ac.table_script", serde)
|
||||
.type_attribute(".komp_ac.table_structure", serde)
|
||||
.type_attribute(".komp_ac.table_validation", serde)
|
||||
// tables_data requests contain prost_types::Value, which does not
|
||||
// implement Serde. Only response-side types cross into the GUI.
|
||||
.type_attribute(".komp_ac.tables_data.PostTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.PutTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.TableUpdateImpactResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.ArchiveTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.DeleteTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.ResolvedTableLinkVersion", serde)
|
||||
.type_attribute(".komp_ac.tables_data.ResolvedTableLinkUpdate", serde)
|
||||
.type_attribute(".komp_ac.tables_data.ResolvedTableLink", serde)
|
||||
.type_attribute(".komp_ac.tables_data.GetTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.RowNavigation", serde)
|
||||
.type_attribute(".komp_ac.tables_data.GetLastTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.GetAdjacentTableDataResponse", serde)
|
||||
.type_attribute(".komp_ac.tables_data.ResolvedTableLinkStatus", serde)
|
||||
.type_attribute(".komp_ac.tables_data.RowNavigationMode", serde)
|
||||
.field_attribute(
|
||||
".komp_ac.table_validation.FieldValidation.locked",
|
||||
"#[serde(default)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.CharacterLimits",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DisplayMask",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.TableValidationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.PatternRule",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.PatternPosition",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.CharacterConstraint",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.PatternRules",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.AllowedValues",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpdateFieldValidationRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpdateFieldValidationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ReplaceTableValidationRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ReplaceTableValidationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ValidationRuleDefinition",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ValidationSetRuleItem",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ValidationSetRuleItem.Source",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ValidationSetDefinition",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpsertValidationRuleRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpsertValidationRuleResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ListValidationRulesRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ListValidationRulesResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DeleteValidationRuleRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DeleteValidationRuleResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpsertValidationSetRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.UpsertValidationSetResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ListValidationSetsRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ListValidationSetsResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DeleteValidationSetRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.DeleteValidationSetResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ApplyValidationSetRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.ApplyValidationSetResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.LockFieldValidationRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.LockFieldValidationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
// Enum -> readable strings in JSON ("BYTES", "DISPLAY_WIDTH")
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.CountMode",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)] #[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.PatternPositionKind",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)] #[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_validation.CharacterConstraintKind",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)] #[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.ColumnDefinition",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.field_attribute(
|
||||
".komp_ac.table_definition.ColumnDefinition.boolean_ledger",
|
||||
"#[serde(default, alias = \"boolean_ledger_operator\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.PostTableDefinitionRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
// Carried by the two requests that create columns, both of which are
|
||||
// serialised, so it has to be serialisable with them.
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.GeneratedColumnAlias",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
".komp_ac.table_validation.CountMode",
|
||||
"#[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.CreateInvoiceTemplateTableRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
".komp_ac.table_validation.PatternPositionKind",
|
||||
"#[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.GeneratedInvoiceTemplateTable",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.CreateInvoiceTemplateTableResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.AddTableColumnsRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.TableDefinitionResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.CopyProfileRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.CopyProfileResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.GetColumnAliasRenameHistoryRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.ColumnAliasRenameHistoryEntry",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.GetColumnAliasRenameHistoryResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.ColumnPresentation",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.SetColumnPresentationRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_definition.SetColumnPresentationResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]"
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_script.PostTableScriptRequest",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
)
|
||||
.type_attribute(
|
||||
".komp_ac.table_script.TableScriptResponse",
|
||||
"#[derive(serde::Serialize, serde::Deserialize)]",
|
||||
".komp_ac.table_validation.CharacterConstraintKind",
|
||||
"#[serde(rename_all = \"SCREAMING_SNAKE_CASE\")]",
|
||||
)
|
||||
.compile_protos(
|
||||
&[
|
||||
@@ -252,12 +75,6 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
&["proto"],
|
||||
)?;
|
||||
|
||||
// Scope build-script reruns to the actual inputs. Without this, the script
|
||||
// emits no `rerun-if-changed` directives, so Cargo reruns it whenever any
|
||||
// file in the package changes. Since codegen writes into `src/proto/`, that
|
||||
// self-write retriggers the script on every build (an infinite loop under
|
||||
// `cargo watch`). tonic_build 0.13 emitted these automatically; 0.14
|
||||
// (tonic_prost_build) no longer does.
|
||||
println!("cargo:rerun-if-changed=build.rs");
|
||||
for proto in [
|
||||
"proto/accounting.proto",
|
||||
|
||||
Reference in New Issue
Block a user