from sqlalchemy import Column, String, Text, Float, Date, Boolean, Integer, DateTime
from sqlalchemy.sql import func
from app.core.database import Base
import uuid

def generate_uuid():
    return str(uuid.uuid4())

class DealInfo(Base):
    __tablename__ = "deal_info"

    id = Column(String(36), primary_key=True, default=generate_uuid)
    user_id = Column(String(36), nullable=True, index=True)
    
    # 标题和内容
    title = Column(String(255), nullable=False)
    content = Column(Text, nullable=True)
    
    # 成交信息
    deal_price = Column(Float, nullable=True)  # 成交价格
    deal_date = Column(Date, nullable=True)  # 成交日期
    deal_no = Column(String(20), nullable=True, index=True)  # 行情编号（从A000001开始递增）
    
    # 包装和分类
    packaging = Column(String(50), nullable=True)  # 包装（标百/标十/单张）
    category = Column(String(100), nullable=True)  # 分类
    
    # 评级相关
    is_graded = Column(Boolean, default=False)  # 是否评级
    grading_company = Column(String(100), nullable=True)  # 评级机构
    grading_score = Column(String(50), nullable=True)  # 评级分数
    
    # 号码特征
    tail_number = Column(String(10), nullable=True)  # 尾号
    size_type = Column(String(20), nullable=True)  # 大小号
    
    # 版别
    version = Column(String(50), nullable=True)  # 版别
    
    # 交易信息
    platform = Column(String(50), nullable=True)  # 成交平台
    seller = Column(String(100), nullable=True)  # 出售者
    buyer = Column(String(100), nullable=True)  # 购买者
    
    # 状态
    status = Column(String(20), default="active")
    
    # 统计
    view_count = Column(Integer, default=0)
    contact_count = Column(Integer, default=0)
    
    # 时间
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())