"""Operating System model."""

from shopdb.extensions import db
from .base import BaseModel


class OperatingSystem(BaseModel):
    """Operating system model."""
    __tablename__ = 'operatingsystems'

    osid = db.Column(db.Integer, primary_key=True)
    osname = db.Column(db.String(100), nullable=False)
    osversion = db.Column(db.String(50))
    architecture = db.Column(db.String(20), comment='x86, x64, ARM')
    endoflife = db.Column(db.Date, comment='End of support date')

    __table_args__ = (
        db.UniqueConstraint('osname', 'osversion', name='uq_os_name_version'),
    )

    def __repr__(self):
        return f"<OperatingSystem {self.osname} {self.osversion}>"
