| 123456789101112131415161718192021222324252627282930 |
- from sqlalchemy.orm import Session
- from sqlalchemy import text
- from typing import List, Optional
- from app.utils.search import apply_keyword_search
- from app.utils.pagination import paginate
- from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
- from app.models.card import Card
- from app.schemas.card import CardCreate
- class CardService:
- @staticmethod
- def create(db: Session, obj_in: CardCreate) -> Card:
- db_obj = Card(**obj_in.dict())
- db.add(db_obj)
- db.commit()
- db.refresh(db_obj)
- return db_obj
- @staticmethod
- def list_by_keyword(db: Session, keyword: str = None, page: int = 0, size: int = 10, culture: str = "english"):
- query = db.query(Card).filter(Card.culture == culture)
-
- query = apply_keyword_search(
- query=query,
- model=Card,
- keyword=keyword,
- fields=["title", "content", "label"]
- )
- return paginate(query, page, size)
|