mirror of
https://github.com/Infinidat/infi.clickhouse_orm.git
synced 2025-02-21 10:40:34 +03:00
Add validation of array field's inner field
This commit is contained in:
parent
cec543eee7
commit
be1cbdee76
|
@ -363,6 +363,8 @@ class ArrayField(Field):
|
||||||
class_default = []
|
class_default = []
|
||||||
|
|
||||||
def __init__(self, inner_field, default=None, alias=None, materialized=None, readonly=None):
|
def __init__(self, inner_field, default=None, alias=None, materialized=None, readonly=None):
|
||||||
|
assert isinstance(inner_field, Field), "The first argument of ArrayField must be a Field instance"
|
||||||
|
assert not isinstance(inner_field, ArrayField), "Multidimensional array fields are not supported by the ORM"
|
||||||
self.inner_field = inner_field
|
self.inner_field = inner_field
|
||||||
super(ArrayField, self).__init__(default, alias, materialized, readonly)
|
super(ArrayField, self).__init__(default, alias, materialized, readonly)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ class ArrayFieldsTest(unittest.TestCase):
|
||||||
instance = ModelWithArrays(
|
instance = ModelWithArrays(
|
||||||
date_field='2016-08-30',
|
date_field='2016-08-30',
|
||||||
arr_str=['goodbye,', 'cruel', 'world', 'special chars: ,"\\\'` \n\t\\[]'],
|
arr_str=['goodbye,', 'cruel', 'world', 'special chars: ,"\\\'` \n\t\\[]'],
|
||||||
arr_date=['2010-01-01']
|
arr_date=['2010-01-01'],
|
||||||
)
|
)
|
||||||
self.database.insert([instance])
|
self.database.insert([instance])
|
||||||
query = 'SELECT * from $db.modelwitharrays ORDER BY date_field'
|
query = 'SELECT * from $db.modelwitharrays ORDER BY date_field'
|
||||||
|
@ -62,6 +62,11 @@ class ArrayFieldsTest(unittest.TestCase):
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
parse_array(s)
|
parse_array(s)
|
||||||
|
|
||||||
|
def test_invalid_inner_field(self):
|
||||||
|
for x in (DateField, None, "", ArrayField(Int32Field())):
|
||||||
|
with self.assertRaises(AssertionError):
|
||||||
|
ArrayField(x)
|
||||||
|
|
||||||
|
|
||||||
class ModelWithArrays(Model):
|
class ModelWithArrays(Model):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user