card_service.py 1001 B

123456789101112131415161718192021222324252627282930
  1. from sqlalchemy.orm import Session
  2. from sqlalchemy import text
  3. from typing import List, Optional
  4. from app.utils.search import apply_keyword_search
  5. from app.utils.pagination import paginate
  6. from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
  7. from app.models.card import Card
  8. from app.schemas.card import CardCreate
  9. class CardService:
  10. @staticmethod
  11. def create(db: Session, obj_in: CardCreate) -> Card:
  12. db_obj = Card(**obj_in.dict())
  13. db.add(db_obj)
  14. db.commit()
  15. db.refresh(db_obj)
  16. return db_obj
  17. @staticmethod
  18. def list_by_keyword(db: Session, keyword: str = None, page: int = 0, size: int = 10, culture: str = "english"):
  19. query = db.query(Card).filter(Card.culture == culture)
  20. query = apply_keyword_search(
  21. query=query,
  22. model=Card,
  23. keyword=keyword,
  24. fields=["title", "content", "label"]
  25. )
  26. return paginate(query, page, size)