toql_core 0.4.2

Library with core functionality for Toql
Documentation
use super::context::Context;
use crate::{alias_format::AliasFormat, sql_arg::SqlArg};
use std::collections::{HashMap, HashSet};

pub struct ContextBuilder {
    pub roles: HashSet<String>,
    pub aux_params: HashMap<String, SqlArg>,
    pub alias_format: AliasFormat,
}

impl ContextBuilder {
    pub fn new() -> Self {
        ContextBuilder {
            roles: HashSet::new(),
            aux_params: HashMap::new(),
            alias_format: AliasFormat::Canonical,
        }
    }

    pub fn with_roles(mut self, roles: HashSet<String>) -> Self {
        self.roles = roles;
        self
    }
    pub fn with_aux_params(mut self, aux_params: HashMap<String, SqlArg>) -> Self {
        self.aux_params = aux_params;
        self
    }
    pub fn with_alias_format(mut self, alias_format: AliasFormat) -> Self {
        self.alias_format = alias_format;
        self
    }
    pub fn build(self) -> Context {
        Context {
            roles: self.roles,
            aux_params: self.aux_params,
            alias_format: self.alias_format,
        }
    }
}

impl Default for ContextBuilder {
    fn default() -> Self {
        Self::new()
    }
}