"""SQLAlchemy Models."""
from datetime import datetime, date
from sqlalchemy import Column, Integer, String, Date, DateTime, Text
from .db import Base


class Application(Base):
    __tablename__ = "applications"

    id = Column(Integer, primary_key=True, index=True)
    company = Column(String, nullable=False, index=True)
    position = Column(String, nullable=False)
    location = Column(String, nullable=True)
    source = Column(String, nullable=True)        # z.B. "Stepstone", "LinkedIn", "Email"
    status = Column(String, nullable=False, default="open")  # open|interview|offer|rejected|withdrawn
    applied_at = Column(Date, default=date.today)
    last_update = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    contact_name = Column(String, nullable=True)
    contact_email = Column(String, nullable=True)
    job_id = Column(String, nullable=True)        # externe Kennziffer
    notes = Column(Text, nullable=True)

    def to_dict(self):
        return {
            "id": self.id,
            "company": self.company,
            "position": self.position,
            "location": self.location,
            "source": self.source,
            "status": self.status,
            "applied_at": self.applied_at.isoformat() if self.applied_at else None,
            "last_update": self.last_update.isoformat() if self.last_update else None,
            "contact_name": self.contact_name,
            "contact_email": self.contact_email,
            "job_id": self.job_id,
            "notes": self.notes,
        }
