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.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/archivist/peewee_ext.py b/archivist/peewee_ext.py
index ff03861..edcb9c9 100644
--- a/archivist/peewee_ext.py
+++ b/archivist/peewee_ext.py
@@ -1,4 +1,5 @@
from peewee import Field, SQL
+from playhouse.fields import CompressedField as _CompressedField
from itertools import starmap
from functools import reduce
@@ -10,6 +11,13 @@ 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 CompressedField(_CompressedField):
+ def db_value(self, value):
+ return value if value is None else self.compress(value)
+
+ def python_value(self, value):
+ return value if value is None else self.decompress(value)
+
class EnumField(Field):
db_field = 'enum'