mysql_binlog_connector_rust/column/json/
json_formatter.rs

1use crate::column::column_type::ColumnType;
2
3// refer: https://github.com/osheroff/mysql-binlog-connector-java/blob/master/src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/json/JsonFormatter.java
4pub trait JsonFormatter {
5    fn begin_object(&mut self, num_elements: u32);
6
7    fn begin_array(&mut self, num_elements: u32);
8
9    fn end_object(&mut self);
10
11    fn end_array(&mut self);
12
13    fn name(&mut self, name: &str);
14
15    fn value_string(&mut self, value: &str);
16
17    fn value_int(&mut self, value: i32);
18
19    fn value_long(&mut self, value: i64);
20
21    fn value_double(&mut self, value: f64);
22
23    fn value_big_int(&mut self, value: i128);
24
25    fn value_decimal(&mut self, value: &str);
26
27    fn value_bool(&mut self, value: bool);
28
29    fn value_null(&mut self);
30
31    fn value_year(&mut self, year: i32);
32
33    fn value_date(&mut self, year: i32, month: i32, day: i32);
34
35    #[allow(clippy::too_many_arguments)]
36    fn value_datetime(
37        &mut self,
38        year: i32,
39        month: i32,
40        day: i32,
41        hour: i32,
42        min: i32,
43        sec: i32,
44        micro_seconds: i32,
45    );
46
47    fn value_time(&mut self, hour: i32, min: i32, sec: i32, micro_seconds: i32);
48
49    fn value_timestamp(&mut self, seconds_past_epoch: i64, micro_seconds: i32);
50
51    fn value_opaque(&mut self, column_type: &ColumnType, value: &[u8]);
52
53    fn next_entry(&mut self);
54}