def get_story(cls, limit: Optional[int] = None, offset: Optional[int] = None, sort: Optional[str] = None, category_id: Optional[int] = None) -> list: story_qs = Story.sa.query( Story.sa.id, Story.sa.name, Story.sa.slug, Story.sa.description, Story.sa.content, Category.sa.name.label('category_name') ).join( Category.sa ) if category_id: total_count = Story.sa.query(func.count(Story.sa.id)).filter(Category.sa.id == category_id).scalar() story_qs = story_qs.filter( Category.sa.id == category_id ) else: total_count = Story.sa.query(func.count(Story.sa.id)).scalar() story_qs = BaseRespository.filter_limit(story_qs, limit) story_qs = BaseRespository.filter_offset(story_qs, offset) story_qs = BaseRespository.sort_all(story_qs, sort, Story) try: result = story_qs.all() except NoResultFound: result = None return result, total_count
def get_category(cls, limit: Optional[int] = None, offset: Optional[int] = None, sort: Optional[str] = None) -> list: category_qs = Category.sa.query( Category.sa.id, Category.sa.name, Category.sa.slug ) total_count = Category.sa.query(func.count(Category.sa.id)).scalar() category_qs = BaseRespository.filter_limit(category_qs, limit) category_qs = BaseRespository.filter_offset(category_qs, offset) category_qs = BaseRespository.sort_all(category_qs, sort, Category) try: result = category_qs.all() except NoResultFound: result = None return result, total_count