rbatis_codegen/codegen/syntax_tree_pysql/
sql_node.rs

1use crate::codegen::syntax_tree_pysql::{ToHtml, Name, NodeType};
2
3/// Represents a reusable SQL fragment node in py_sql, defined by a `<sql>` tag in XML or an equivalent in py_sql.
4/// It allows defining a piece of SQL that can be included elsewhere.
5///
6/// # Example
7///
8/// PySQL syntax (conceptual, as direct py_sql for `<sql>` might be less common than XML):
9/// ```py
10/// # define a reusable sql fragment
11/// sql id='columns':
12///   column1, column2
13/// ```
14#[derive(Clone, Debug, Eq, PartialEq)]
15pub struct SqlNode {
16    pub id: String,
17    pub childs: Vec<NodeType>,
18}
19
20impl Name for SqlNode {
21    fn name() -> &'static str {
22        "sql"
23    }
24}
25
26impl ToHtml for SqlNode {
27    fn as_html(&self) -> String {
28        let mut childs = String::new();
29        for x in &self.childs {
30            childs.push_str(&x.as_html());
31        }
32        format!("<sql id=\"{}\">{}</sql>", self.id, childs)
33    }
34}