import uuid
from datetime import datetime, timezone
from sqlalchemy import Boolean, DateTime, ForeignKey, String, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from app.db.base import Base

class Supplier(Base):
    __tablename__="suppliers"
    id: Mapped[uuid.UUID]=mapped_column(UUID(as_uuid=True),primary_key=True,default=uuid.uuid4)
    business_id: Mapped[uuid.UUID]=mapped_column(UUID(as_uuid=True),ForeignKey("businesses.id",ondelete="RESTRICT"),nullable=False,index=True)
    name: Mapped[str]=mapped_column(String(200),nullable=False); phone: Mapped[str|None]=mapped_column(String(50),nullable=True); email: Mapped[str|None]=mapped_column(String(320),nullable=True)
    address: Mapped[str|None]=mapped_column(String(500),nullable=True); city: Mapped[str|None]=mapped_column(String(100),nullable=True); state: Mapped[str|None]=mapped_column(String(100),nullable=True); notes: Mapped[str|None]=mapped_column(Text,nullable=True)
    is_active: Mapped[bool]=mapped_column(Boolean,default=True,nullable=False)
    created_at: Mapped[datetime]=mapped_column(DateTime(timezone=True),default=lambda:datetime.now(timezone.utc),nullable=False)
    updated_at: Mapped[datetime]=mapped_column(DateTime(timezone=True),default=lambda:datetime.now(timezone.utc),onupdate=lambda:datetime.now(timezone.utc),nullable=False)
