fn main() -> Result<(), Box> { tonic_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)]", ) .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.UpdateFieldValidationRequest", "#[derive(serde::Serialize, serde::Deserialize)]", ) .type_attribute( ".komp_ac.table_validation.UpdateFieldValidationResponse", "#[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_definition.ColumnDefinition", "#[derive(serde::Serialize, serde::Deserialize)]", ) .type_attribute( ".komp_ac.table_definition.TableLink", "#[derive(serde::Serialize, serde::Deserialize)]" ) .type_attribute( ".komp_ac.table_definition.PostTableDefinitionRequest", "#[derive(serde::Serialize, serde::Deserialize)]", ) .type_attribute( ".komp_ac.table_definition.TableDefinitionResponse", "#[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)]", ) .compile_protos( &[ "proto/common.proto", "proto/adresar.proto", "proto/auth.proto", "proto/search.proto", "proto/search2.proto", "proto/table_definition.proto", "proto/table_script.proto", "proto/table_structure.proto", "proto/table_validation.proto", "proto/tables_data.proto", "proto/uctovnictvo.proto", ], &["proto"], )?; Ok(()) }