コンテンツにスキップ

コマンド / クエリ一覧

アプリケーションサービス層に処理を依頼するための 2 種類の DTO (Command / Query) をまとめて参照できるページです。UI や Agent からドメイン操作を行う際に、状態を変更するか(Command)、取得するか(Query)で使い分けます。

区分 目的 副作用 命名例 代表メソッド/変換
Command 状態変更(作成/更新/削除/ステータス変更) あり CreateTaskCommand to_task_create(), to_project_update() など
Query 状態取得(検索/一覧/件数/存在確認) なし GetTasksByStatusQuery (変換不要: 条件値のみ)

Command オブジェクトについて

書き込み系ユースケース(状態変更)を依頼するための不変 DTO です。呼び出し側は必要最小限の入力をまとめ、Application Service に渡します。

設計指針:

  • 1 コマンド = 1 ユースケース (副作用を伴う操作)
  • dataclass により軽量でテスト容易
  • to_xxx_create / to_xxx_update などでモデルへ変換
  • Validation は上位 (UI/Service) で実施し、DTO 自体はデータキャリア

利用例 (タスク作成)

from logic.commands.task_commands import CreateTaskCommand
from logic.application_services.task_application_service import TaskApplicationService

cmd = CreateTaskCommand(title="調査", description="仕様確認")
service = TaskApplicationService(...)
service.create_task(cmd)

Query オブジェクトについて

読み取り系ユースケース(状態取得)を依頼するための DTO です。フィルタ条件をカプセル化しサービス層に渡します。

設計指針:

  • 1 クエリ = 1 読み取りユースケース (副作用なし)
  • dataclass によりシンプル
  • 条件/識別子のみを保持しロジックを持たない
  • 複雑化する場合は新たな専用クエリを追加し責務分離

利用例 (ステータス別タスク取得)

from logic.queries.task_queries import GetTasksByStatusQuery
from logic.application_services.task_application_service import TaskApplicationService
from models import TaskStatus

q = GetTasksByStatusQuery(status=TaskStatus.INBOX)
service = TaskApplicationService(...)
tasks = service.get_tasks_by_status(q)

コマンド API リファレンス

タスク関連コマンド

src.logic.commands.task_commands

タスク関連のコマンドオブジェクト

Application Service層で使用するCommand DTOs (Data Transfer Objects)

CreateTaskCommand dataclass

タスク作成コマンド

Source code in src/logic/commands/task_commands.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@dataclass
class CreateTaskCommand:
    """タスク作成コマンド"""

    title: str
    description: str = ""
    status: TaskStatus = TaskStatus.INBOX
    due_date: date | None = None

    def to_task_create(self) -> TaskCreate:
        """TaskCreateモデルに変換

        Returns:
            TaskCreate: モデル変換結果
        """
        return TaskCreate(
            title=self.title,
            description=self.description,
            status=self.status,
            due_date=self.due_date,
        )
to_task_create()

TaskCreateモデルに変換

戻り値:

名前 タイプ デスクリプション
TaskCreate TaskCreate

モデル変換結果

ソースコード位置: src/logic/commands/task_commands.py
27
28
29
30
31
32
33
34
35
36
37
38
def to_task_create(self) -> TaskCreate:
    """TaskCreateモデルに変換

    Returns:
        TaskCreate: モデル変換結果
    """
    return TaskCreate(
        title=self.title,
        description=self.description,
        status=self.status,
        due_date=self.due_date,
    )

DeleteTaskCommand dataclass

タスク削除コマンド

Source code in src/logic/commands/task_commands.py
65
66
67
68
69
@dataclass
class DeleteTaskCommand:
    """タスク削除コマンド"""

    task_id: UUID

UpdateTaskCommand dataclass

タスク更新コマンド

Source code in src/logic/commands/task_commands.py
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@dataclass
class UpdateTaskCommand:
    """タスク更新コマンド"""

    task_id: UUID
    title: str
    description: str = ""
    status: TaskStatus = TaskStatus.INBOX
    due_date: date | None = None

    def to_task_update(self) -> TaskUpdate:
        """TaskUpdateモデルに変換

        Returns:
            TaskUpdate: モデル変換結果
        """
        return TaskUpdate(
            title=self.title,
            description=self.description,
            status=self.status,
            due_date=self.due_date,
        )
to_task_update()

TaskUpdateモデルに変換

戻り値:

名前 タイプ デスクリプション
TaskUpdate TaskUpdate

モデル変換結果

ソースコード位置: src/logic/commands/task_commands.py
51
52
53
54
55
56
57
58
59
60
61
62
def to_task_update(self) -> TaskUpdate:
    """TaskUpdateモデルに変換

    Returns:
        TaskUpdate: モデル変換結果
    """
    return TaskUpdate(
        title=self.title,
        description=self.description,
        status=self.status,
        due_date=self.due_date,
    )

UpdateTaskStatusCommand dataclass

タスクステータス更新コマンド

Source code in src/logic/commands/task_commands.py
72
73
74
75
76
77
@dataclass
class UpdateTaskStatusCommand:
    """タスクステータス更新コマンド"""

    task_id: UUID
    new_status: TaskStatus

プロジェクト関連コマンド

src.logic.commands.project_commands

プロジェクト関連のコマンドオブジェクト

Application Service層で使用するCommand DTOs (Data Transfer Objects)

CreateProjectCommand dataclass

プロジェクト作成コマンド

Source code in src/logic/commands/project_commands.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@dataclass
class CreateProjectCommand:
    """プロジェクト作成コマンド"""

    title: str
    description: str = ""
    status: ProjectStatus = ProjectStatus.ACTIVE

    def to_project_create(self) -> ProjectCreate:
        """ProjectCreateモデルに変換

        Returns:
            ProjectCreate: モデル変換結果
        """
        return ProjectCreate(
            title=self.title,
            description=self.description,
            status=self.status,
        )
to_project_create()

ProjectCreateモデルに変換

戻り値:

名前 タイプ デスクリプション
ProjectCreate ProjectCreate

モデル変換結果

ソースコード位置: src/logic/commands/project_commands.py
25
26
27
28
29
30
31
32
33
34
35
def to_project_create(self) -> ProjectCreate:
    """ProjectCreateモデルに変換

    Returns:
        ProjectCreate: モデル変換結果
    """
    return ProjectCreate(
        title=self.title,
        description=self.description,
        status=self.status,
    )

DeleteProjectCommand dataclass

プロジェクト削除コマンド

Source code in src/logic/commands/project_commands.py
60
61
62
63
64
@dataclass
class DeleteProjectCommand:
    """プロジェクト削除コマンド"""

    project_id: UUID

UpdateProjectCommand dataclass

プロジェクト更新コマンド

Source code in src/logic/commands/project_commands.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
@dataclass
class UpdateProjectCommand:
    """プロジェクト更新コマンド"""

    project_id: UUID
    title: str | None = None
    description: str | None = None
    status: ProjectStatus | None = None

    def to_project_update(self) -> ProjectUpdate:
        """ProjectUpdateモデルに変換

        Returns:
            ProjectUpdate: モデル変換結果
        """
        return ProjectUpdate(
            title=self.title,
            description=self.description,
            status=self.status,
        )
to_project_update()

ProjectUpdateモデルに変換

戻り値:

名前 タイプ デスクリプション
ProjectUpdate ProjectUpdate

モデル変換結果

ソースコード位置: src/logic/commands/project_commands.py
47
48
49
50
51
52
53
54
55
56
57
def to_project_update(self) -> ProjectUpdate:
    """ProjectUpdateモデルに変換

    Returns:
        ProjectUpdate: モデル変換結果
    """
    return ProjectUpdate(
        title=self.title,
        description=self.description,
        status=self.status,
    )

UpdateProjectStatusCommand dataclass

プロジェクトステータス更新コマンド

Source code in src/logic/commands/project_commands.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
@dataclass
class UpdateProjectStatusCommand:
    """プロジェクトステータス更新コマンド"""

    project_id: UUID
    new_status: ProjectStatus

    def to_project_update(self) -> ProjectUpdate:
        """ProjectUpdateモデルに変換

        Returns:
            ProjectUpdate: モデル変換結果
        """
        return ProjectUpdate(status=self.new_status)
to_project_update()

ProjectUpdateモデルに変換

戻り値:

名前 タイプ デスクリプション
ProjectUpdate ProjectUpdate

モデル変換結果

ソースコード位置: src/logic/commands/project_commands.py
74
75
76
77
78
79
80
def to_project_update(self) -> ProjectUpdate:
    """ProjectUpdateモデルに変換

    Returns:
        ProjectUpdate: モデル変換結果
    """
    return ProjectUpdate(status=self.new_status)

タグ関連コマンド

src.logic.commands.tag_commands

タグ関連のコマンドオブジェクト

Application Service層で使用するCommand DTOs (Data Transfer Objects)

CreateTagCommand dataclass

タグ作成コマンド

Source code in src/logic/commands/tag_commands.py
17
18
19
20
21
22
23
24
25
26
27
28
29
@dataclass
class CreateTagCommand:
    """タグ作成コマンド"""

    name: str

    def to_tag_create(self) -> TagCreate:
        """TagCreateモデルに変換

        Returns:
            TagCreate: モデル変換結果
        """
        return TagCreate(name=self.name)
to_tag_create()

TagCreateモデルに変換

戻り値:

名前 タイプ デスクリプション
TagCreate TagCreate

モデル変換結果

ソースコード位置: src/logic/commands/tag_commands.py
23
24
25
26
27
28
29
def to_tag_create(self) -> TagCreate:
    """TagCreateモデルに変換

    Returns:
        TagCreate: モデル変換結果
    """
    return TagCreate(name=self.name)

DeleteTagCommand dataclass

タグ削除コマンド

Source code in src/logic/commands/tag_commands.py
48
49
50
51
52
@dataclass
class DeleteTagCommand:
    """タグ削除コマンド"""

    tag_id: UUID

UpdateTagCommand dataclass

タグ更新コマンド

Source code in src/logic/commands/tag_commands.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@dataclass
class UpdateTagCommand:
    """タグ更新コマンド"""

    tag_id: UUID
    name: str | None = None

    def to_tag_update(self) -> TagUpdate:
        """TagUpdateモデルに変換

        Returns:
            TagUpdate: モデル変換結果
        """
        return TagUpdate(name=self.name)
to_tag_update()

TagUpdateモデルに変換

戻り値:

名前 タイプ デスクリプション
TagUpdate TagUpdate

モデル変換結果

ソースコード位置: src/logic/commands/tag_commands.py
39
40
41
42
43
44
45
def to_tag_update(self) -> TagUpdate:
    """TagUpdateモデルに変換

    Returns:
        TagUpdate: モデル変換結果
    """
    return TagUpdate(name=self.name)

タスクタグ関連コマンド

src.logic.commands.task_tag_commands

タスクタグ関連のコマンドオブジェクト

Application Service層で使用するCommand DTOs (Data Transfer Objects)

CreateTaskTagCommand dataclass

タスクタグ関連作成コマンド

Source code in src/logic/commands/task_tag_commands.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@dataclass
class CreateTaskTagCommand:
    """タスクタグ関連作成コマンド"""

    task_id: UUID
    tag_id: UUID

    def to_task_tag_create(self) -> TaskTagCreate:
        """TaskTagCreateモデルに変換

        Returns:
            TaskTagCreate: モデル変換結果
        """
        return TaskTagCreate(
            task_id=self.task_id,
            tag_id=self.tag_id,
        )
to_task_tag_create()

TaskTagCreateモデルに変換

戻り値:

名前 タイプ デスクリプション
TaskTagCreate TaskTagCreate

モデル変換結果

ソースコード位置: src/logic/commands/task_tag_commands.py
24
25
26
27
28
29
30
31
32
33
def to_task_tag_create(self) -> TaskTagCreate:
    """TaskTagCreateモデルに変換

    Returns:
        TaskTagCreate: モデル変換結果
    """
    return TaskTagCreate(
        task_id=self.task_id,
        tag_id=self.tag_id,
    )

DeleteTaskTagCommand dataclass

タスクタグ関連削除コマンド

Source code in src/logic/commands/task_tag_commands.py
36
37
38
39
40
41
@dataclass
class DeleteTaskTagCommand:
    """タスクタグ関連削除コマンド"""

    task_id: UUID
    tag_id: UUID

DeleteTaskTagsByTagCommand dataclass

タグのすべてのタスク関連削除コマンド

Source code in src/logic/commands/task_tag_commands.py
51
52
53
54
55
@dataclass
class DeleteTaskTagsByTagCommand:
    """タグのすべてのタスク関連削除コマンド"""

    tag_id: UUID

DeleteTaskTagsByTaskCommand dataclass

タスクのすべてのタグ関連削除コマンド

Source code in src/logic/commands/task_tag_commands.py
44
45
46
47
48
@dataclass
class DeleteTaskTagsByTaskCommand:
    """タスクのすべてのタグ関連削除コマンド"""

    task_id: UUID

クエリ API リファレンス

プロジェクト関連クエリ

src.logic.queries.project_queries

プロジェクト関連のクエリオブジェクト

Application Service層で使用するQuery DTOs (Data Transfer Objects)

GetActiveProjectsQuery dataclass

アクティブプロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
43
44
45
@dataclass
class GetActiveProjectsQuery:
    """アクティブプロジェクト取得クエリ"""

GetAllProjectsQuery dataclass

全プロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
24
25
26
@dataclass
class GetAllProjectsQuery:
    """全プロジェクト取得クエリ"""

GetCompletedProjectsQuery dataclass

完了プロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
48
49
50
@dataclass
class GetCompletedProjectsQuery:
    """完了プロジェクト取得クエリ"""

GetProjectByIdQuery dataclass

ID指定プロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
17
18
19
20
21
@dataclass
class GetProjectByIdQuery:
    """ID指定プロジェクト取得クエリ"""

    project_id: UUID

GetProjectsByStatusQuery dataclass

ステータス別プロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
29
30
31
32
33
@dataclass
class GetProjectsByStatusQuery:
    """ステータス別プロジェクト取得クエリ"""

    status: ProjectStatus

SearchProjectsByTitleQuery dataclass

タイトル検索プロジェクト取得クエリ

Source code in src/logic/queries/project_queries.py
36
37
38
39
40
@dataclass
class SearchProjectsByTitleQuery:
    """タイトル検索プロジェクト取得クエリ"""

    title_query: str

タグ関連クエリ

src.logic.queries.tag_queries

タグ関連のクエリオブジェクト

Application Service層で使用するQuery DTOs (Data Transfer Objects)

CheckTagExistsByNameQuery dataclass

名前によるタグ存在確認クエリ

Source code in src/logic/queries/tag_queries.py
41
42
43
44
45
@dataclass
class CheckTagExistsByNameQuery:
    """名前によるタグ存在確認クエリ"""

    name: str

GetAllTagsQuery dataclass

全タグ取得クエリ

Source code in src/logic/queries/tag_queries.py
22
23
24
@dataclass
class GetAllTagsQuery:
    """全タグ取得クエリ"""

GetTagByIdQuery dataclass

ID指定タグ取得クエリ

Source code in src/logic/queries/tag_queries.py
15
16
17
18
19
@dataclass
class GetTagByIdQuery:
    """ID指定タグ取得クエリ"""

    tag_id: UUID

GetTagByNameQuery dataclass

名前指定タグ取得クエリ

Source code in src/logic/queries/tag_queries.py
27
28
29
30
31
@dataclass
class GetTagByNameQuery:
    """名前指定タグ取得クエリ"""

    name: str

SearchTagsByNameQuery dataclass

名前検索タグ取得クエリ

Source code in src/logic/queries/tag_queries.py
34
35
36
37
38
@dataclass
class SearchTagsByNameQuery:
    """名前検索タグ取得クエリ"""

    name_query: str

タスク関連クエリ

src.logic.queries.task_queries

タスク関連のクエリオブジェクト

Application Service層で使用するQuery DTOs (Data Transfer Objects)

GetAllTasksByStatusDictQuery dataclass

全ステータス別タスク取得クエリ

Source code in src/logic/queries/task_queries.py
36
37
38
@dataclass
class GetAllTasksByStatusDictQuery:
    """全ステータス別タスク取得クエリ"""

GetTaskByIdQuery dataclass

ID指定タスク取得クエリ

Source code in src/logic/queries/task_queries.py
29
30
31
32
33
@dataclass
class GetTaskByIdQuery:
    """ID指定タスク取得クエリ"""

    task_id: UUID

GetTasksByStatusQuery dataclass

ステータス別タスク取得クエリ

Source code in src/logic/queries/task_queries.py
17
18
19
20
21
@dataclass
class GetTasksByStatusQuery:
    """ステータス別タスク取得クエリ"""

    status: TaskStatus

GetTodayTasksCountQuery dataclass

今日のタスク件数取得クエリ

Source code in src/logic/queries/task_queries.py
24
25
26
@dataclass
class GetTodayTasksCountQuery:
    """今日のタスク件数取得クエリ"""

タスクタグ関連クエリ

src.logic.queries.task_tag_queries

タスクタグ関連のクエリオブジェクト

Application Service層で使用するQuery DTOs (Data Transfer Objects)

CheckTaskTagExistsQuery dataclass

タスクタグ関連存在確認クエリ

Source code in src/logic/queries/task_tag_queries.py
37
38
39
40
41
42
@dataclass
class CheckTaskTagExistsQuery:
    """タスクタグ関連存在確認クエリ"""

    task_id: UUID
    tag_id: UUID

GetAllTaskTagsQuery dataclass

全タスクタグ関連取得クエリ

Source code in src/logic/queries/task_tag_queries.py
45
46
47
@dataclass
class GetAllTaskTagsQuery:
    """全タスクタグ関連取得クエリ"""

GetTaskTagByTaskAndTagQuery dataclass

タスクIDとタグIDでタスクタグ関連取得クエリ

Source code in src/logic/queries/task_tag_queries.py
29
30
31
32
33
34
@dataclass
class GetTaskTagByTaskAndTagQuery:
    """タスクIDとタグIDでタスクタグ関連取得クエリ"""

    task_id: UUID
    tag_id: UUID

GetTaskTagsByTagIdQuery dataclass

タグID指定でタスクタグ関連取得クエリ

Source code in src/logic/queries/task_tag_queries.py
22
23
24
25
26
@dataclass
class GetTaskTagsByTagIdQuery:
    """タグID指定でタスクタグ関連取得クエリ"""

    tag_id: UUID

GetTaskTagsByTaskIdQuery dataclass

タスクID指定でタスクタグ関連取得クエリ

Source code in src/logic/queries/task_tag_queries.py
15
16
17
18
19
@dataclass
class GetTaskTagsByTaskIdQuery:
    """タスクID指定でタスクタグ関連取得クエリ"""

    task_id: UUID