Unverified Commit 511ad440 authored by Dylan Jones's avatar Dylan Jones
Browse files

what is this, some kind of real project with docstrings???

parent 5930bcc4
...@@ -9,11 +9,25 @@ class FieldType(enum.Enum): ...@@ -9,11 +9,25 @@ class FieldType(enum.Enum):
RATING = {'num_reviews': int, 'average_rating': float} RATING = {'num_reviews': int, 'average_rating': float}
def validate(self, data): def validate(self, data):
"""
Given an instance of a value, verfiy that the instance satisfies the
schema for this primitive type. e.g. if FieldType.STRING.validate was
called, it would make sure that the `data` parameter looked like
{
"value": "some string"
}
This method throws a ValueError if the passed value doesn't conform to the
schema.
:param data: the instance of this primitive to validate.
:raises ValueError: if the passed data is incorrect
"""
if type(data) is not dict: if type(data) is not dict:
raise ValueError("YA DONE GOOFED. NEED A DICT.") raise ValueError("YA DONE GOOFED. NEED A DICT.")
for field in self.value: for field in self.value:
if field not in data: if field not in data:
raise ValueError(f"Fields of type {self.name} need a {field} field") raise ValueError(f"Fields of type {self.name} need a {field} field")
self.value[field](data[field]) # This will throw ValueError if it fails to validate if type(data[field]) is not self.value[field]:
raise ValueError(f"Expecting field of type {self.value[field]}, got {type(data[field])}")
if len(data) != len(self.value): if len(data) != len(self.value):
raise ValueError(f"Too many fields for field of type {self.name}") raise ValueError(f"Too many fields for field of type {self.name}")
...@@ -29,7 +29,7 @@ class Base(object): ...@@ -29,7 +29,7 @@ class Base(object):
class Point(Base): class Point(Base):
""" """
TODO docstring Represents actual instances of any and all points on the map.
""" """
__tablename__ = 'point' __tablename__ = 'point'
name = Column(String, nullable=True) name = Column(String, nullable=True)
...@@ -62,7 +62,7 @@ class Point(Base): ...@@ -62,7 +62,7 @@ class Point(Base):
class Category(Base): class Category(Base):
""" """
Represent a schema for a single category of objects (e.g. water fountain) Represent a schema for a single category of objects (e.g. water fountain or bathroom)
""" """
__tablename__ = 'category' __tablename__ = 'category'
...@@ -74,7 +74,7 @@ class Category(Base): ...@@ -74,7 +74,7 @@ class Category(Base):
class Field(Base): class Field(Base):
""" """
Represent a field that can be on an ObjectType schema Represents a single field in the Category schema.
""" """
__tablename__ = 'field' __tablename__ = 'field'
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment