from pydantic import BaseModel, Field
from app.models.base_class import Base
from sqlalchemy.orm import Mapped,mapped_column,relationship,Session
from sqlalchemy import ForeignKey, Integer

class PreSelectedCategoryBase(BaseModel):
    pre_id : int | None = Field(default=None)
    low_value : int | None = Field(default=None)
    medium_value : int | None = Field(default=None)
    high_value : int | None = Field(default=None)
    group_id : int | None = Field(default=None)

class TblPreSelectedCategory(Base):
    __tablename__ = "tbl_pre_selected_category"
    
    pre_id : Mapped[int] = mapped_column("pre_id", Integer, primary_key=True, autoincrement=True)
    low_value : Mapped[int] = mapped_column("low_value", Integer, nullable=True, server_default=None)
    medium_value : Mapped[int] = mapped_column("medium_value", Integer, nullable=True, server_default=None)
    high_value : Mapped[int] = mapped_column("high_value", Integer, nullable=True, server_default=None)
    group_id : Mapped[int] = mapped_column("group_id", Integer, ForeignKey("tbl_group.group_id"))
    
    group = relationship("TblGroup", back_populates="pre_selected_category")
    
    @classmethod
    def create_pre_selected_category(cls, data:PreSelectedCategoryBase, db:Session) ->"TblPreSelectedCategory":
        data_dict = data.model_dump()
        new_data = cls(**data_dict)
        db.add(new_data)
        db.flush()
        return new_data
    
    