tank_core/expression/
unary_op.rs1use crate::{
2 Expression, OpPrecedence,
3 writer::{Context, SqlWriter},
4};
5
6#[derive(Clone, Copy, PartialEq, Debug)]
7pub enum UnaryOpType {
8 Negative,
9 Not,
10}
11impl OpPrecedence for UnaryOpType {
12 fn precedence(&self, writer: &dyn SqlWriter) -> i32 {
13 writer.expression_unary_op_precedence(self)
14 }
15}
16
17#[derive(Debug)]
18pub struct UnaryOp<V: Expression> {
19 pub op: UnaryOpType,
20 pub arg: V,
21}
22
23impl<E: Expression> OpPrecedence for UnaryOp<E> {
24 fn precedence(&self, writer: &dyn SqlWriter) -> i32 {
25 writer.expression_unary_op_precedence(&self.op)
26 }
27}
28
29impl<E: Expression> Expression for UnaryOp<E> {
30 fn write_query(&self, writer: &dyn SqlWriter, context: Context, buff: &mut String) {
31 writer.write_expression_unary_op(
32 context,
33 buff,
34 &UnaryOp {
35 op: self.op,
36 arg: &self.arg,
37 },
38 )
39 }
40}