(&self, writer: &mut W)
| 17 | |
| 18 | impl zerompk::ToMessagePack for SqlExpr { |
| 19 | fn write<W: zerompk::Write>(&self, writer: &mut W) -> zerompk::Result<()> { |
| 20 | match self { |
| 21 | SqlExpr::Column(s) => { |
| 22 | writer.write_array_len(2)?; |
| 23 | writer.write_u8(0)?; |
| 24 | writer.write_string(s) |
| 25 | } |
| 26 | SqlExpr::Literal(v) => { |
| 27 | writer.write_array_len(2)?; |
| 28 | writer.write_u8(1)?; |
| 29 | v.write(writer) |
| 30 | } |
| 31 | SqlExpr::BinaryOp { left, op, right } => { |
| 32 | writer.write_array_len(4)?; |
| 33 | writer.write_u8(2)?; |
| 34 | left.write(writer)?; |
| 35 | op.write(writer)?; |
| 36 | right.write(writer) |
| 37 | } |
| 38 | SqlExpr::Negate(inner) => { |
| 39 | writer.write_array_len(2)?; |
| 40 | writer.write_u8(3)?; |
| 41 | inner.write(writer) |
| 42 | } |
| 43 | SqlExpr::Function { name, args } => { |
| 44 | writer.write_array_len(3)?; |
| 45 | writer.write_u8(4)?; |
| 46 | writer.write_string(name)?; |
| 47 | args.write(writer) |
| 48 | } |
| 49 | SqlExpr::Cast { expr, to_type } => { |
| 50 | writer.write_array_len(3)?; |
| 51 | writer.write_u8(5)?; |
| 52 | expr.write(writer)?; |
| 53 | to_type.write(writer) |
| 54 | } |
| 55 | SqlExpr::Case { |
| 56 | operand, |
| 57 | when_thens, |
| 58 | else_expr, |
| 59 | } => { |
| 60 | writer.write_array_len(4)?; |
| 61 | writer.write_u8(6)?; |
| 62 | operand.write(writer)?; |
| 63 | writer.write_array_len(when_thens.len())?; |
| 64 | for (cond, val) in when_thens { |
| 65 | writer.write_array_len(2)?; |
| 66 | cond.write(writer)?; |
| 67 | val.write(writer)?; |
| 68 | } |
| 69 | else_expr.write(writer) |
| 70 | } |
| 71 | SqlExpr::Coalesce(exprs) => { |
| 72 | writer.write_array_len(2)?; |
| 73 | writer.write_u8(7)?; |
| 74 | exprs.write(writer) |
| 75 | } |
| 76 | SqlExpr::NullIf(e1, e2) => { |
no test coverage detected