from datetime import datetime, timezone
from sqlalchemy import Column, Integer, String, DateTime, UniqueConstraint, Index
from sqlalchemy.orm import relationship
from src.core.models.base import Base


class Country(Base):
    __tablename__ = "countries"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(100), nullable=False)

    deleted_at = Column(DateTime, nullable=True)
    created_at = Column(DateTime, default=datetime.now(timezone.utc), nullable=False)
    updated_at = Column(DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc), nullable=False)

    regions = relationship("Region", back_populates="country")
    appellations = relationship("Appellation", back_populates="country")
    sub_appellations = relationship("SubAppellation", back_populates="country")

    __table_args__ = (
        UniqueConstraint("name", "deleted_at", name="uq_countries_name_deleted"),
        Index("ix_countries_name", "name"),
    )
