| 72 | |
| 73 | impl zerompk::ToMessagePack for CdcEvent { |
| 74 | fn write<W: zerompk::Write>(&self, writer: &mut W) -> zerompk::Result<()> { |
| 75 | let field_count = 9 |
| 76 | + usize::from(self.new_value.is_some()) |
| 77 | + usize::from(self.old_value.is_some()) |
| 78 | + usize::from(self.field_diffs.is_some()) |
| 79 | + usize::from(self.system_time_ms.is_some()) |
| 80 | + usize::from(self.valid_time_ms.is_some()); |
| 81 | writer.write_map_len(field_count)?; |
| 82 | writer.write_string("sequence")?; |
| 83 | writer.write_u64(self.sequence)?; |
| 84 | writer.write_string("partition")?; |
| 85 | writer.write_u32(self.partition)?; |
| 86 | writer.write_string("collection")?; |
| 87 | writer.write_string(&self.collection)?; |
| 88 | writer.write_string("op")?; |
| 89 | writer.write_string(&self.op)?; |
| 90 | writer.write_string("row_id")?; |
| 91 | writer.write_string(&self.row_id)?; |
| 92 | writer.write_string("event_time")?; |
| 93 | writer.write_u64(self.event_time)?; |
| 94 | writer.write_string("lsn")?; |
| 95 | writer.write_u64(self.lsn)?; |
| 96 | writer.write_string("tenant_id")?; |
| 97 | writer.write_u64(self.tenant_id)?; |
| 98 | writer.write_string("schema_version")?; |
| 99 | writer.write_u64(self.schema_version)?; |
| 100 | if let Some(ref v) = self.new_value { |
| 101 | writer.write_string("new_value")?; |
| 102 | JsonValue(v.clone()).write(writer)?; |
| 103 | } |
| 104 | if let Some(ref v) = self.old_value { |
| 105 | writer.write_string("old_value")?; |
| 106 | JsonValue(v.clone()).write(writer)?; |
| 107 | } |
| 108 | if let Some(ref diffs) = self.field_diffs { |
| 109 | writer.write_string("field_diffs")?; |
| 110 | diffs.write(writer)?; |
| 111 | } |
| 112 | if let Some(ts) = self.system_time_ms { |
| 113 | writer.write_string("system_time_ms")?; |
| 114 | writer.write_i64(ts)?; |
| 115 | } |
| 116 | if let Some(ts) = self.valid_time_ms { |
| 117 | writer.write_string("valid_time_ms")?; |
| 118 | writer.write_i64(ts)?; |
| 119 | } |
| 120 | Ok(()) |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | impl<'a> zerompk::FromMessagePack<'a> for CdcEvent { |