25 lines
757 B
Python
25 lines
757 B
Python
|
|
from typing import List
|
||
|
|
|
||
|
|
from fastapi_async_sqlalchemy import db
|
||
|
|
from sqlalchemy import select
|
||
|
|
|
||
|
|
from app.models import RoleModel
|
||
|
|
|
||
|
|
from . import BaseRepository
|
||
|
|
|
||
|
|
|
||
|
|
class RoleRepository(BaseRepository[RoleModel]):
|
||
|
|
def __init__(self, model):
|
||
|
|
super().__init__(model)
|
||
|
|
|
||
|
|
async def find_by_name(self, name: str) -> RoleModel:
|
||
|
|
"""Find record by name."""
|
||
|
|
query = select(self.model).where(self.model.name == name)
|
||
|
|
result = await db.session.execute(query)
|
||
|
|
return result.scalar_one_or_none()
|
||
|
|
|
||
|
|
async def get_list_by_names(self, name: List[str]) -> List[RoleModel]:
|
||
|
|
query = select(self.model).filter(self.model.name.in_(name))
|
||
|
|
result = await db.session.execute(query)
|
||
|
|
return result.scalars().all()
|