serde of jsonb in grpc

This commit is contained in:
Priec
2025-09-14 10:56:38 +02:00
parent 01c4ff2e14
commit d88c239bf6
10 changed files with 327 additions and 74 deletions

View File

@@ -2,21 +2,57 @@
fn main() -> Result<(), Box<dyn std::error::Error>> {
tonic_build::configure()
.build_server(true)
.out_dir("src/proto")
.file_descriptor_set_path("src/proto/descriptor.bin")
.compile_protos( // Changed from .compile()
.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/uctovnictvo.proto",
"proto/table_structure.proto",
"proto/table_definition.proto",
"proto/tables_data.proto",
"proto/table_script.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"],
)?;