from sqlmodel import Session, select
from models.signalphabet import SignAlphabet


class SignAlphabetRepository:

    def __init__(self, session: Session):
        self.session = session

    # CREATE (for inserting your 10 letters)
    def create(self, letter: SignAlphabet):
        self.session.add(letter)
        self.session.commit()
        self.session.refresh(letter)
        return letter

    # GET ALL letters
    def get_all(self):
        statement = select(SignAlphabet)
        return self.session.exec(statement).all()

    # GET ONE letter
    def get_one(self, letter_id: int):
        return self.session.get(SignAlphabet, letter_id)

    
    def get_by_letter(self, letter: str):
        statement = select(SignAlphabet).where(
            SignAlphabet.letter == letter
        )
        return self.session.exec(statement).first()

    def update(self, letter_id: int, updated_letter: SignAlphabet):
        letter_obj = self.session.get(SignAlphabet, letter_id)
        if letter_obj:
            for key, value in updated_letter.model_dump(exclude_unset=True).items():
                setattr(letter_obj, key, value)
            self.session.add(letter_obj)
            self.session.commit()
            self.session.refresh(letter_obj)
        return letter_obj
    
    # DELETE (optional but useful)
    def delete(self, letter_id: int):
        obj = self.session.get(SignAlphabet, letter_id)
        if obj:
            self.session.delete(obj)
            self.session.commit()
        return obj