kopia lustrzana https://github.com/simonw/datasette
add support for ?field__isnull=1 (#107)
* add support for ?field__isnull=1 * Add unit test and conditional formatting for ?field__isnullpull/117/head
rodzic
b9af49be6c
commit
ed2b3f25be
|
@ -46,6 +46,7 @@ def build_where_clauses(args):
|
|||
'lte': '"{}" <= :{}',
|
||||
'glob': '"{}" glob :{}',
|
||||
'like': '"{}" like :{}',
|
||||
'isnull': '"{}" is null',
|
||||
}[lookup]
|
||||
numeric_operators = {'gt', 'gte', 'lt', 'lte'}
|
||||
value_convert = {
|
||||
|
@ -56,11 +57,15 @@ def build_where_clauses(args):
|
|||
converted = value_convert(value)
|
||||
if lookup in numeric_operators and converted.isdigit():
|
||||
converted = int(converted)
|
||||
param_id = 'p{}'.format(i)
|
||||
if ':{}' in template:
|
||||
param_id = 'p{}'.format(i)
|
||||
params[param_id] = converted
|
||||
tokens = (column, param_id)
|
||||
else:
|
||||
tokens = (column,)
|
||||
sql_bits.append(
|
||||
template.format(column, param_id)
|
||||
template.format(*tokens)
|
||||
)
|
||||
params[param_id] = converted
|
||||
return sql_bits, params
|
||||
|
||||
|
||||
|
|
|
@ -88,6 +88,15 @@ def test_custom_json_encoder(obj, expected):
|
|||
['"foo" like :p0', '"zax" glob :p1'],
|
||||
['2%2', '3*']
|
||||
),
|
||||
(
|
||||
{
|
||||
'foo__isnull': '1',
|
||||
'baz__isnull': '1',
|
||||
'bar__gt': '10'
|
||||
},
|
||||
['"bar" > :p0', '"baz" is null', '"foo" is null'],
|
||||
[10]
|
||||
),
|
||||
])
|
||||
def test_build_where(args, expected_where, expected_params):
|
||||
sql_bits, actual_params = utils.build_where_clauses(args)
|
||||
|
|
Ładowanie…
Reference in New Issue