summaryrefslogtreecommitdiff
path: root/archivist/peewee_ext.py
diff options
context:
space:
mode:
Diffstat (limited to 'archivist/peewee_ext.py')
-rw-r--r--archivist/peewee_ext.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/archivist/peewee_ext.py b/archivist/peewee_ext.py
index edcb9c9..011f80d 100644
--- a/archivist/peewee_ext.py
+++ b/archivist/peewee_ext.py
@@ -1,5 +1,5 @@
from peewee import Field, SQL
-from playhouse.fields import CompressedField as _CompressedField
+from playhouse.fields import CompressedField as _CompressedField, CharField as _CharField
from itertools import starmap
from functools import reduce
@@ -11,6 +11,14 @@ def sqlite_tuple_in(fields, values):
subqueries = (reduce(op.and_, starmap(op.eq, zip(fields, value_tuple))) for value_tuple in values)
return reduce(op.or_, subqueries)
+class CharField(_CharField):
+ def __init__(self, *args, **kwargs):
+ constraints = kwargs.pop('constraints', [])
+ nocase = kwargs.pop('nocase', False)
+ if nocase:
+ constraints.append(SQL('COLLATE NOCASE'))
+ super().__init__(*args, constraints=constraints, **kwargs)
+
class CompressedField(_CompressedField):
def db_value(self, value):
return value if value is None else self.compress(value)