"""
Data Import Models
==================

Models for CSV upload and data import operations.
"""

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from src.utils.db import Base


class CSVUploadLog(Base):
    """Log table for CSV upload processing events"""
    __tablename__ = "csv_upload_logs"

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    company_id = Column(Integer, ForeignKey("companies.id"), nullable=False, index=True)
    upload_date = Column(DateTime(timezone=True), server_default=func.now(), nullable=False, index=True)
    csv_type = Column(String(50), nullable=False, index=True)  # product, purchase_order, purchase_receive, sales_order, sales_return, purchase_return, stock_transfer
    processing_status = Column(String(50), nullable=False, index=True)  # succeeded, failed, partially_succeeded
    file_path = Column(String(500), nullable=False)
    error_message = Column(String(2000), nullable=True)  # Error details if failed
    rows_processed = Column(Integer, nullable=True)  # Number of rows successfully processed
    rows_total = Column(Integer, nullable=True)  # Total number of rows in CSV
    created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)

    # Relationships
    company = relationship("Company")

    def __repr__(self):
        return f"<CSVUploadLog(id={self.id}, company_id={self.company_id}, csv_type='{self.csv_type}', status='{self.processing_status}')>"
