def gen_where()

in src/ab/plugins/db/sqlite.py [0:0]


    def gen_where(conditions):
        """
        :param conditions:
                {
                    'key': val                  ->      key = val
                    'key:contains': val             ->      key LIKE %val%
                    #TODO 'a:le|a:ge': 'val1,val2'    ->      a <= val1 OR a >= val2
                }
        :return:
        """
        where = []
        values = []
        for key_operator, value in conditions.items():
            if ':' not in key_operator:
                key = key_operator
                operator = 'eq'
            else:
                key, operator = key_operator.split(':')

            key = Sqlite.escape(key)
            m = {
                'eq': lambda k, v: ('{0} = %s'.format(k), v),
                'gt': lambda k, v: ('{0} > %s'.format(k), v),
                'gte': lambda k, v: ('{0} >= %s'.format(k), v),
                'lt': lambda k, v: ('{0} < %s'.format(k), v),
                'lte': lambda k, v: ('{0} <= %s'.format(k), v),
                'contains': lambda k, v: ('{0} LIKE %s'.format(k), '%{v}%'.format(v=v))
            }
            condition, value = m[operator](key, value)
            where.append(condition)
            values.append(value)
        return ' where ' + ' and '.join(where), values