"""Territory Model. Model representing a marketing territory. """ from oto import response import sqlalchemy from product_digital_marketing.connectors import mysql class Territory(mysql.BaseModel): """Territory Model.""" __tablename__ = 'territory' pk = sqlalchemy.Column( 'id', sqlalchemy.Integer, primary_key=True, autoincrement=True) name = sqlalchemy.Column(sqlalchemy.VARCHAR(255)) category = sqlalchemy.Column(sqlalchemy.Enum( 'country', 'region', 'continent'), nullable=False) def to_dict(self): """Create a dictionary representation of the object. Returns: dict: the representation of the object. """ return dict( id=self.pk, name=self.name, category=self.category ) @mysql.wrap_db_errors def get_territories(): """Fetch all territories. Returns: response.Response: a list of all territories. """ with mysql.db_session() as session: territories = session.query(Territory).all() if not territories: return response.create_not_found_response() return response.Response( message={ 'items': [territory.to_dict() for territory in territories]})