from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class Company(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False, unique=True) tickets = db.relationship('Ticket', backref='company', lazy=True) onsites = db.relationship('Onsite', backref='company', lazy=True) class Ticket(db.Model): id = db.Column(db.Integer, primary_key=True) company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False) name = db.Column(db.String(100), nullable=False) subject = db.Column(db.String(100), nullable=False) ticket_number = db.Column(db.String(100), nullable=False) status = db.Column(db.String(10), nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) closed_at = db.Column(db.DateTime, nullable=True) archived = db.Column(db.Boolean, default=False, nullable=False) class Note(db.Model): id = db.Column(db.Integer, primary_key=True) ticket_id = db.Column(db.Integer, db.ForeignKey('ticket.id'), nullable=False) note = db.Column(db.Text, nullable=False) archive = db.Column(db.Boolean, default=False, nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) ticket = db.relationship('Ticket', backref=db.backref('notes', lazy=True)) class Onsite(db.Model): id = db.Column(db.Integer, primary_key=True) company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False) day_of_week = db.Column(db.String(10), nullable=False) note = db.Column(db.Text, nullable=False)