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

class RollBase(BaseModel):
    
    roll_id : int | None = Field(default=None)
    rool : Literal["student", "admin", "superadmin"]

class TblRoll(Base):
    
    __tablename__ = "tbl_roll"
    roll_id : Mapped[int] = mapped_column("roll_id", Integer, primary_key=True, autoincrement=True)
    roll : Mapped[str] = mapped_column(Enum("student", "admin", "superadmin"))
    
    
@classmethod
def create_roll(cls, db:Session, data:RollBase) ->"TblRoll":
    data_dict = data.model_dump()
    new_data = cls(**data_dict)
    db.add(new_data)
    db.flush()
    return new_data