(&mut self, name: &str)
| 777 | } |
| 778 | |
| 779 | fn ensure_enum_generated(&mut self, name: &str) -> Result<()> { |
| 780 | if self.generated.contains_key(&schema_key(name)) { |
| 781 | return Ok(()); |
| 782 | } |
| 783 | let descriptor = self |
| 784 | .registry |
| 785 | .enumeration(name) |
| 786 | .ok_or_else(|| anyhow!("enum {} not found", name))?; |
| 787 | let mut variants = Vec::new(); |
| 788 | for value in &descriptor.descriptor.value { |
| 789 | if let Some(name) = &value.name { |
| 790 | variants.push(Value::String(name.clone())); |
| 791 | } |
| 792 | } |
| 793 | let mut schema = Map::new(); |
| 794 | schema.insert("type".into(), Value::String("string".into())); |
| 795 | schema.insert("enum".into(), Value::Array(variants)); |
| 796 | if let Some(doc) = &descriptor.description { |
| 797 | schema.insert("description".into(), Value::String(doc.clone())); |
| 798 | } |
| 799 | self.generated |
| 800 | .insert(schema_key(name), Value::Object(schema)); |
| 801 | Ok(()) |
| 802 | } |
| 803 | |
| 804 | fn field_schema(&mut self, field: &FieldDescriptorProto) -> Result<Value> { |
| 805 | if matches!(field_type(field), FieldType::Message) |
no test coverage detected