gitql_parser/
name_generator.rs

1static COLUMN_NAME_PREFIX: &str = "column_";
2static HIDDEN_NAME_PREFIX: &str = "_@temp_";
3
4/// Component to generate name for visible and hidden columns with number as prefix started from 0
5#[derive(Default)]
6pub struct NameGenerator {
7    column_name_number: usize,
8    temp_name_number: usize,
9}
10
11impl NameGenerator {
12    /// Generate name for visible column
13    pub fn generate_column_name(&mut self) -> String {
14        let name = format!("{}{}", COLUMN_NAME_PREFIX, self.column_name_number);
15        self.column_name_number += 1;
16        name
17    }
18
19    pub fn generate_temp_name(&mut self) -> String {
20        let name = format!("{}{}", HIDDEN_NAME_PREFIX, self.temp_name_number);
21        self.temp_name_number += 1;
22        name
23    }
24
25    /// Reset the name counter to start from 0 in new session
26    pub fn reset_numbers(&mut self) {
27        self.column_name_number = 0;
28        self.temp_name_number = 0;
29    }
30}