from sqlalchemy import ARRAY, Column, Float, Integer, String, Text
from sqlalchemy.dialects.postgresql import JSONB

from app.core.schema_binding import global_model
from app.models.base import BaseModel


@global_model
class ExpertProfile(BaseModel):
    __tablename__ = 'expert_profiles'
    __table_args__ = {'schema': 'hub_global'}
    user_id = Column(Integer, nullable=False, unique=True, index=True)
    expertise_areas = Column(ARRAY(Text), nullable=False, default=[])
    skills = Column(ARRAY(Text), nullable=False, default=[])
    bio = Column(Text, nullable=True)
    total_annotations = Column(Integer, default=0)
    total_reviews = Column(Integer, default=0)
    avg_quality_score = Column(Float, default=0.0)
    reputation_score = Column(Integer, default=0)
    meta_data = Column(JSONB, default={})

@global_model
class ExpertContribution(BaseModel):
    __tablename__ = 'expert_contributions'
    __table_args__ = {'schema': 'hub_global'}
    user_id = Column(Integer, nullable=False, index=True)
    contribution_type = Column(String(50), nullable=False)
    task_id = Column(Integer, nullable=False)
    quality_score = Column(Float, nullable=True)
