Better gestion of privates variables.
Add a forgotten f for f-strings.
This commit is contained in:
parent
b13f8ab039
commit
f84aec4456
@ -7,6 +7,7 @@ from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class QueryGenerator(ABC):
|
||||
"""Abstract class to define what methods should a query generator have."""
|
||||
@abstractmethod
|
||||
def __init__(self): ...
|
||||
|
||||
@ -14,18 +15,23 @@ class QueryGenerator(ABC):
|
||||
def __str__(self) -> str: ...
|
||||
|
||||
|
||||
class QueryWithParameter(QueryGenerator):
|
||||
# DEFAULT_AUTHORIZED_PARAMETER_VALUES: tuple[str, ...] = ("foo", "bar")
|
||||
class QueryWithParameter(QueryGenerator, ABC):
|
||||
"""Abstract class for query generators with our 3 parameters.
|
||||
This class implements the gestion of 3 attributes : `parameter`,
|
||||
`authorized_parameter_values` and `summed_attribute`. They are managed so
|
||||
that there is no typing error, and using default values. Importantly, the
|
||||
default value of authorized_parameter_values (when not given or set to
|
||||
None) is the the value of `self.DEFAULT_AUTHORIZED_PARAMETER_VALUES`.
|
||||
"""
|
||||
|
||||
def __init__(self, parameter: str|None =None,
|
||||
authorized_parameter_values: tuple[str, ...] | None = None,
|
||||
summed_attribute: str|None =None):
|
||||
if parameter is None: raise ValueError
|
||||
self.parameter = str(parameter)
|
||||
self.__parameter = str(parameter)
|
||||
|
||||
if authorized_parameter_values is None:
|
||||
authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
|
||||
self.authorized_parameter_values = authorized_parameter_values
|
||||
self.__authorized_parameter_values = authorized_parameter_values
|
||||
self.__force_typing_on_authorized_parameter_values()
|
||||
|
||||
if summed_attribute is None: raise ValueError
|
||||
self.summed_attribute = str(summed_attribute)
|
||||
@ -39,6 +45,8 @@ class QueryWithParameter(QueryGenerator):
|
||||
self.__parameter = str(value)
|
||||
|
||||
def __force_typing_on_authorized_parameter_values(self):
|
||||
if self.__authorized_parameter_values is None:
|
||||
self.__authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
|
||||
self.__authorized_parameter_values = tuple(
|
||||
map(str, self.__authorized_parameter_values))
|
||||
|
||||
@ -54,6 +62,8 @@ class QueryWithParameter(QueryGenerator):
|
||||
|
||||
|
||||
class QueryWithParameterGroupedByCriteria(QueryWithParameter):
|
||||
"""Similar to QueryWithParameter, but with an addtional parameter : `criteria`.
|
||||
The results are grouped by criteria, and values of `summed_attribute` are summed for each `parameter`, to give an order on `parameter`'s values"""
|
||||
|
||||
def __init__(self, parameter: str|None =None,
|
||||
authorized_parameter_values: tuple[str, ...] | None =None,
|
||||
@ -67,7 +77,7 @@ class QueryWithParameterGroupedByCriteria(QueryWithParameter):
|
||||
authorized_parameter_values = self.DEFAULT_AUTHORIZED_PARAMETER_VALUES
|
||||
self.authorized_parameter_values = authorized_parameter_values
|
||||
|
||||
self.criteria = criteria
|
||||
self.__criteria = str(criteria)
|
||||
|
||||
if summed_attribute is None: raise ValueError
|
||||
self.summed_attribute = str(summed_attribute)
|
||||
@ -162,7 +172,7 @@ class QuerySSBWithParameterGroupedByCriteria(QueryWithParameterGroupedByCriteria
|
||||
res += "INNER JOIN date ON lo_orderdate = D_DATEKEY\n"
|
||||
|
||||
if self.authorized_parameter_values is not None:
|
||||
res += "WHERE {self.parameter} IN {self.authorized_parameter_values}\n"
|
||||
res += f"WHERE {self.parameter} IN {self.authorized_parameter_values}\n"
|
||||
|
||||
|
||||
res += f"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user