Esempio n. 1
0
 def __init__(self, provider):
     error_message = "The provider cannot be None. If you meant to use the CollectionProvider pass in a tuple or list"
     Guard.against_none(provider, error_message)
     if isinstance(provider, (list, tuple)):
         self.provider = CollectionProvider(provider)
     else:
         self.provider = provider
     self.expressions = [] 
     self.order_expressions = []
     self.group_expression = None
     self.parser = ExpressionParser()
Esempio n. 2
0
class Query(object):
    def __init__(self, provider):
        error_message = "The provider cannot be None. If you meant to use the CollectionProvider pass in a tuple or list"
        Guard.against_none(provider, error_message)
        if isinstance(provider, (list, tuple)):
            self.provider = CollectionProvider(provider)
        else:
            self.provider = provider
        self.expressions = [] 
        self.order_expressions = []
        self.group_expression = None
        self.parser = ExpressionParser()

    def where(self, clause):
        self.expressions.append(self.parser.parse(clause.strip()))
        return self

    def group_by(self, *args):
        for arg in args:
            self.group_expression = self.parser.parse(arg.strip())
        return self

    def order_by(self, *args):
        for arg in args:
            self.order_expressions.append(self.parser.parse(arg.strip()))
        return self

    def select(self, *cols):
        empty_message = "Selecting with no fields is not valid. " \
                                  + "When using From(provider).select method, " \
                                  + "please provide a list of expressions or strings as fields."
        Guard.against_empty(cols, empty_message)
        for col in cols:
            Guard.against_empty(col, empty_message)
        Guard.accepts_only(cols, [str, Expression], "Selecting with invalid type. " \
                                                    + "When using From(provider).select method, " \
                                                    + "please provide a list of expressions or strings as fields.")
                                                    
        return self.provider.parse(self, action=Actions.Select, cols=cols)

    def select_many(self):
        return self.provider.parse(self, action=Actions.SelectMany)

    def count(self):
        return self.provider.parse(self, action=Actions.Count)

    def max(self, column="item"):
        return self.provider.parse(self, action=Actions.Max, column=column)

    def min(self, column="item"):
        return self.provider.parse(self, action=Actions.Min, column=column)

    def sum(self, column="item"):
        return self.provider.parse(self, action=Actions.Sum, column=column)

    def avg(self, column="item"):
        return self.provider.parse(self, action=Actions.Avg, column=column)