from datetime import datetime
from uuid import uuid4

from sqlalchemy import Boolean, Column, DateTime, String
from sqlalchemy.dialects.postgresql import JSON, UUID

from app.database import Base


class BizVerification(Base):
    __tablename__ = "biz_verifications"

    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid4, index=True)
    business_name = Column(String(255), nullable=False, index=True)
    cac_number = Column(String(50), nullable=False, index=True)
    
    # Verification data from Dojah/API
    company_name = Column(String(255), nullable=True)
    registration_number = Column(String(50), nullable=True)
    registration_date = Column(String(20), nullable=True)
    company_type = Column(String(100), nullable=True)
    status = Column(String(50), nullable=True)  # e.g., "Active", "Inactive"
    address = Column(String(500), nullable=True)
    
    # Store full response as JSON for flexibility
    raw_data = Column(JSON, nullable=True)
    
    # Verification metadata
    verified = Column(Boolean, default=True, nullable=False)
    verified_at = Column(DateTime, default=datetime.utcnow, nullable=False)
    created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)

    def __repr__(self):
        return f"<BizVerification {self.cac_number}: {self.business_name}>"
