class PersonNotes(db.Model): __tablename__ = 'people_note' person_id = db.Column(db.Integer, db.ForeignKey('people.unique_id'), primary_key=True) note = db.Column(db.Text()) def __str__(self): return 'Person(person_id={}, note={}'.format(self.person_id, self.note) def __repr__(self): return str(self) @staticmethod def update() -> None: db.session.commit() def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json_str(self) -> str: return self.note
class PersonPhone(db.Model): __tablename__ = 'person_phone' unique_id = db.Column(db.Integer(), primary_key=True) person_id = db.Column(db.Integer(), db.ForeignKey('people.unique_id')) phone_number = db.Column(db.Integer()) type = db.Column(db.String(15)) def __str__(self): return 'PersonPhone(unique_id={}, person_id={}, phone_number={}, type={}' \ .format(self.unique_id, self.person_id, self.phone_number, self.type) def __repr__(self): return str(self) @staticmethod def update() -> None: db.session.commit() def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json(self): return { 'unique_id': self.unique_id, 'person_id': self.person_id, 'phone_number': self.phone_number, 'type': self.type, }
class PersonWork(db.Model): __tablename__ = 'people_work' person_id = db.Column(db.Integer, db.ForeignKey('people.unique_id'), primary_key=True) occupation = db.Column(db.String(50)) occupation_start = db.Column(db.Date()) employer = db.Column(db.String(50)) employer_start = db.Column(db.Date()) level_of_education = db.Column(db.String(20)) def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json(self) -> dict: return { 'person_id': self.person_id, 'occupation': self.occupation, 'occupation_start': self.occupation_start, 'employer': self.employer, 'employer_start': self.employer_start, 'level_of_education': self.level_of_education }
class PersonDrivingViolation(db.Model): __tablename__ = 'person_driving_violation' unique_id = db.Column(db.Integer(), primary_key=True) person_id = db.Column(db.Integer(), db.ForeignKey('people.unique_id')) date_received = db.Column(db.Date()) date_convicted = db.Column(db.Date()) type = db.Column(db.Text()) def __str__(self): return 'Person(unique_id={}, person_id={}, date_received={}, date_convicted={}, type={}' \ .format(self.unique_id, self.person_id, self.date_received, self.date_convicted, self.type) def __repr__(self): return str(self) @staticmethod def update() -> None: db.session.commit() def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json(self) -> dict: return { 'unique_id': self.unique_id, 'person_id': self.person_id, 'date_received': self.date_received, 'date_convicted': self.date_convicted, 'type': self.type }
class PersonDrivingAccident(db.Model): __tablename__ = 'person_driving_accident' unique_id = db.Column(db.Integer(), primary_key=True) person_id = db.Column(db.Integer(), db.ForeignKey('people.unique_id')) percent_fault = db.Column(db.Numeric(3)) date_occurred = db.Column(db.Date()) injuries = db.Column(db.Integer()) description = db.Column(db.Text()) paid_by = db.Column(db.String(70)) def __str__(self): return 'Person(unique_id={}, person_id={}, date_received={}, date_convicted={}, type={}' \ .format(self.unique_id, self.person_id, self.date_received, self.date_convicted, self.type) def __repr__(self): return str(self) @staticmethod def update() -> None: db.session.commit() def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json(self) -> dict: return { 'unique_id': self.unique_id, 'person_id': self.person_id, 'date_occurred': self.date_occurred, 'percent_fault': self.percent_fault, 'injuries': self.injuries, 'description': self.description, 'paid_by': self.paid_by }
class Person(db.Model): __tablename__ = 'people' unique_id = db.Column(db.Integer(), primary_key=True) first_name = db.Column(db.String(30)) middle_name = db.Column(db.String(30)) last_name = db.Column(db.String(30)) prefix = db.Column(db.String(10)) suffix = db.Column(db.String(20)) address = db.Column(db.String(70)) mailing_address = db.Column(db.String(70)) birth_date = db.Column(db.String(12)) height = db.Column(db.String(6)) weight = db.Column(db.String(4)) social_security_number = db.Column(db.Integer()) customer_type = db.Column(db.String(20)) can_use_credit_score = db.Column(db.Boolean()) note = db.relationship('PersonNotes', backref='person', cascade='delete, delete-orphan') work = db.relationship('PersonWork', backref='person', cascade='delete, delete-orphan') driving_violations = db.relationship('PersonDrivingViolation', backref='person', cascade='delete, delete-orphan') driving_accidents = db.relationship('PersonDrivingAccident', backref='person', cascade='delete, delete-orphan') phones = db.relationship('PersonPhone', backref='person', cascade='delete, delete-orphan') def __str__(self): return 'Person(unique_id={}, first_name={}, middle_name={}, last_name={}, prefix={}, suffix={}, address={}' \ .format(self.unique_id, self.first_name, self.middle_name, self.last_name, self.prefix, self.suffix, self.address) def __repr__(self): return str(self) @staticmethod def update() -> None: db.session.commit() def add(self) -> None: db.session.add(self) db.session.commit() def delete(self) -> None: db.session.delete(self) db.session.commit() def to_json(self): return { 'unique_id': self.unique_id, 'prefix': self.prefix, 'first_name': self.first_name, 'middle_name': self.middle_name, 'last_name': self.last_name, 'suffix': self.suffix, 'address': self.address, 'mailing_address': self.mailing_address, 'birth_date': self.birth_date, 'height': self.height, 'weight': self.weight, 'social_security_number': self.social_security_number, 'customer_type': self.customer_type, 'can_use_credit_score': self.can_use_credit_score, 'note': [x.to_json_str() for x in self.note], 'work': [x.to_json() for x in self.work], 'driving_violations': [x.to_json() for x in self.driving_violations], 'driving_accidents': [x.to_json() for x in self.driving_accidents] }