首次提交by MimoCode
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from typing import Optional, List
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.models.category import Category
|
||||
from app.repositories.category import CategoryRepository
|
||||
|
||||
|
||||
class CategoryService:
|
||||
def __init__(self, db: AsyncSession):
|
||||
self.db = db
|
||||
self.repo = CategoryRepository(db)
|
||||
|
||||
async def get_categories(self, level: Optional[int] = None, parent_id: Optional[int] = None) -> List[Category]:
|
||||
return await self.repo.get_all(level=level, parent_id=parent_id)
|
||||
|
||||
async def get_category(self, category_id: int) -> Optional[Category]:
|
||||
return await self.repo.get_by_id(category_id)
|
||||
|
||||
async def get_category_with_children(self, category_id: int) -> Optional[Category]:
|
||||
category = await self.repo.get_by_id(category_id)
|
||||
if category:
|
||||
category.children = await self.repo.get_children(category_id)
|
||||
return category
|
||||
|
||||
async def create_category(self, data: dict) -> Category:
|
||||
return await self.repo.create(data)
|
||||
|
||||
async def update_category(self, category_id: int, data: dict) -> Optional[Category]:
|
||||
return await self.repo.update(category_id, data)
|
||||
|
||||
async def delete_category(self, category_id: int) -> bool:
|
||||
return await self.repo.delete(category_id)
|
||||
|
||||
async def get_category_tree(self) -> List[dict]:
|
||||
root_categories = await self.repo.get_all(level=1)
|
||||
tree = []
|
||||
for category in root_categories:
|
||||
children = await self.repo.get_children(category.id)
|
||||
tree.append({
|
||||
"id": category.id,
|
||||
"name": category.name,
|
||||
"level": category.level,
|
||||
"icon": category.icon,
|
||||
"sort_order": category.sort_order,
|
||||
"children": [
|
||||
{
|
||||
"id": child.id,
|
||||
"name": child.name,
|
||||
"level": child.level,
|
||||
"icon": child.icon,
|
||||
"sort_order": child.sort_order
|
||||
}
|
||||
for child in children
|
||||
]
|
||||
})
|
||||
return tree
|
||||
Reference in New Issue
Block a user