Files
komp_ac/common/build.rs
2025-09-14 10:56:38 +02:00

61 lines
2.3 KiB
Rust

// common/build.rs
fn main() -> Result<(), Box<dyn std::error::Error>> {
tonic_build::configure()
.build_server(true)
.file_descriptor_set_path("src/proto/descriptor.bin")
.out_dir("src/proto")
// Derive serde for all relevant 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.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)]",
)
// Derive serde for the enum and keep legacy string values in JSON
.type_attribute(
".komp_ac.table_validation.CountMode",
"#[derive(serde::Serialize, serde::Deserialize)]",
)
.type_attribute(
".komp_ac.table_validation.CountMode",
r#"#[serde(rename_all = "SCREAMING_SNAKE_CASE")]"#,
)
// Back-compat: allow old "character_limits" key to deserialize into "limits"
.field_attribute(
".komp_ac.table_validation.FieldValidation.limits",
r#"#[serde(alias = "character_limits")]"#,
)
// Compile all protos (same list you already have)
.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(())
}