from sqlmodel import Session, select
from models.translationlog import TranslationLog


class TranslationLogRepository:

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

    # CREATE LOG ENTRY
    def create(self, log: TranslationLog):
        self.session.add(log)
        self.session.commit()
        self.session.refresh(log)
        return log

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

    # GET LOGS BY SESSION (VERY IMPORTANT for your project)
    def get_by_session(self, session_id: int):
        statement = select(TranslationLog).where(
            TranslationLog.session_id == session_id
        )
        return self.session.exec(statement).all()

    # GET ONE LOG
    def get_one(self, log_id: int):
        return self.session.get(TranslationLog, log_id)

    # DELETE LOG (optional)
    def delete(self, log_id: int):
        obj = self.session.get(TranslationLog, log_id)
        if obj:
            self.session.delete(obj)
            self.session.commit()
        return obj
    
    def update(self, log_id: int, updated_log: TranslationLog):
        log_obj = self.session.get(TranslationLog, log_id)
        if log_obj:
            for key, value in updated_log.model_dump(exclude_unset=True).items():
                setattr(log_obj, key, value)
            self.session.add(log_obj)
            self.session.commit()
            self.session.refresh(log_obj)
        return log_obj
    
    def get_by_letter(self, letter_id: int):
        statement = select(TranslationLog).where(
            TranslationLog.letterID == letter_id
        )
        return self.session.exec(statement).all()
    
    