Add Date type to CQL encoder

This commit is contained in:
Adam Holmberg
2015-05-26 10:57:24 -05:00
parent b43a947d4a
commit f23cc3a46a

View File

@@ -29,7 +29,7 @@ from uuid import UUID
import six import six
from cassandra.util import (OrderedDict, OrderedMap, OrderedMapSerializedKey, from cassandra.util import (OrderedDict, OrderedMap, OrderedMapSerializedKey,
sortedset, Time) sortedset, Time, Date)
if six.PY3: if six.PY3:
long = int long = int
@@ -76,6 +76,7 @@ class Encoder(object):
datetime.datetime: self.cql_encode_datetime, datetime.datetime: self.cql_encode_datetime,
datetime.date: self.cql_encode_date, datetime.date: self.cql_encode_date,
datetime.time: self.cql_encode_time, datetime.time: self.cql_encode_time,
Date: self.cql_encode_date_ext,
Time: self.cql_encode_time, Time: self.cql_encode_time,
dict: self.cql_encode_map_collection, dict: self.cql_encode_map_collection,
OrderedDict: self.cql_encode_map_collection, OrderedDict: self.cql_encode_map_collection,
@@ -163,11 +164,18 @@ class Encoder(object):
def cql_encode_time(self, val): def cql_encode_time(self, val):
""" """
Converts a :class:`datetime.date` object to a string with format Converts a :class:`cassandra.util.Time` object to a string with format
``HH:MM:SS.mmmuuunnn``. ``HH:MM:SS.mmmuuunnn``.
""" """
return "'%s'" % val return "'%s'" % val
def cql_encode_date_ext(self, val):
"""
Encodes a :class:`cassandra.util.Date` object as an integer
"""
# using the int form in case the Date exceeds datetime.[MIN|MAX]YEAR
return str(val.days_from_epoch + 2 ** 31)
def cql_encode_sequence(self, val): def cql_encode_sequence(self, val):
""" """
Converts a sequence to a string of the form ``(item1, item2, ...)``. This Converts a sequence to a string of the form ``(item1, item2, ...)``. This