Skip to content

Commit

Permalink
add generic filtering functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
jfredrickson committed Apr 10, 2023
1 parent be5685f commit 7378673
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions training/repositories/base.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Generic, Optional, List, Type, TypeVar
from typing import Any, Generic, Optional, List, Type, TypeVar
from sqlalchemy.orm import Session
from training import models

Expand All @@ -21,8 +21,11 @@ def save(self, item: T) -> T:
def find_by_id(self, id: int) -> Optional[T]:
return self._session.query(self._model).filter_by(id=id).first()

def find_all(self) -> List[T]:
return self._session.query(self._model).all()
def find_all(self, filters: dict[str, Any] = {}) -> List[T]:
query = self._session.query(self._model)
for key, value in filters.items():
query = query.filter(getattr(self._model, key) == value)
return query.all()

def delete_by_id(self, id: int) -> None:
self._session.query(self._model).filter_by(id=id).delete()

0 comments on commit 7378673

Please sign in to comment.