33 lines
695 B
Python
33 lines
695 B
Python
"""
|
|
Project 仓储接口
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Optional
|
|
|
|
from packages.domain.entities import Project
|
|
|
|
|
|
class ProjectRepository(ABC):
|
|
"""Project 仓储接口"""
|
|
|
|
@abstractmethod
|
|
def save(self, project: Project) -> None:
|
|
"""保存项目"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def find_by_id(self, project_id: str) -> Optional[Project]:
|
|
"""根据 ID 查找项目"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def count_by_workspace(self, workspace_id: str) -> int:
|
|
"""统计工作空间的项目数量"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def delete(self, project_id: str) -> bool:
|
|
"""删除项目"""
|
|
pass
|