from datetime import datetime # Import SQLAlchemy enum type from sqlalchemy import Enum # Import db from accounts.models import db # Import custom enum db column from accounts.models.status import Status from accounts.models.visit.visit_type import VisitType class Visit(db.Model): __tablename__ = 'visits' id = db.Column(db.Integer, primary_key=True, autoincrement=True) date_time = db.Column(db.DateTime, nullable=False) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) owner = db.relationship('User', back_populates='visits') visit_type = db.Column(Enum(VisitType), default=VisitType.MEDIUM_WALK) dog_id = db.Column(db.Integer, db.ForeignKey('dogs.id'), nullable=False) dogs = db.relationship('Dog', back_populates='visits') created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, onupdate=datetime.utcnow) def __str__(self): return self.date_time def __repr__(self): return self.to_dict() def get_date(self): year = self.date_time.year month = self.date_time.month day = self.date_time.month return f'{year}-{month}-{day}' def get_time(self): hour = self.date_time.hour minute = self.date_time.minute if hour == 0 and minute == 0: return 0 else: return f'{hour}:{minute}' def to_dict(self): return { 'id': self.id, 'date_time': self.date_time, 'owner_id': self.owner_id, 'owner': self.owner, 'visit_type': self.visit_type, 'dog_id': self.dog_id, 'dogs': self.dogs, 'created_at': self.created_at, 'updated_at': self.update_at }