61 lines
2.3 KiB
Rust
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(())
|
|
}
|