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