Skip to content

Commit

Permalink
Very minor improvements to mysql jsonfield.
Browse files Browse the repository at this point in the history
  • Loading branch information
coleifer committed Jun 16, 2023
1 parent 2887ed9 commit a4b2a7e
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions playhouse/mysql_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from peewee import ImproperlyConfigured
from peewee import Insert
from peewee import MySQLDatabase
from peewee import Node
from peewee import NodeList
from peewee import SQL
from peewee import TextField
Expand Down Expand Up @@ -85,13 +86,23 @@ def get_binary_type(self):
class JSONField(TextField):
field_type = 'JSON'

def db_value(self, value):
if value is not None:
return json.dumps(value)
def __init__(self, json_dumps=None, json_loads=None, **kwargs):
self._json_dumps = json_dumps or json.dumps
self._json_loads = json_loads or json.loads
super(JSONField, self).__init__(**kwargs)

def python_value(self, value):
if value is not None:
return json.loads(value)
try:
return self._json_loads(value)
except (TypeError, ValueError):
return value

def db_value(self, value):
if value is not None:
if not isinstance(value, Node):
value = self._json_dumps(value)
return value


def Match(columns, expr, modifier=None):
Expand Down

0 comments on commit a4b2a7e

Please sign in to comment.