from src.models.TestTable import TestTable
#from .engine import get_session
from sqlalchemy.ext.asyncio import AsyncSession
from fastapi import Depends
from sqlalchemy.orm import Session

class TestTableRepo:
    def __init__(self,db:AsyncSession) -> None:
        #self.session = get_session()
        self.session=db

    def readAll(self) -> list[TestTable]:
        return self.session.query(TestTable).all()

    def create(self, name: str) -> TestTable:
        record = TestTable(name=name)
        self.session.add_all([record])
        self.session.commit()
        self.session.refresh(record)
        return record

    def update(self, record: TestTable, name: str) -> TestTable:
        setattr(record, "name", name)
        self.session.commit()
        self.session.refresh(record)
        return record

    def find(self, id: int) -> TestTable | None:
        return self.session.query(TestTable).get(id)


    def delete(self, record: TestTable) -> None:
        self.session.delete(record)
        self.session.commit()
        return None
