コンテンツにスキップ

Task-Tag コマンド

タスクとタグの関連付け管理。タスクへタグを付与 / 解除したり、フィルタ付きで関連一覧を表示できます。

主なコマンド

コマンド例 説明
poe cli task-tag add <TASK_ID> <TAG_ID> タスクへタグを付与
poe cli task-tag remove <TASK_ID> <TAG_ID> タスクから特定タグを解除
poe cli task-tag list すべての関連を一覧
poe cli task-tag list --task <TASK_ID> 特定タスクに紐づくタグ一覧
poe cli task-tag list --tag <TAG_ID> 特定タグが付与されたタスク一覧
poe cli task-tag clear-task <TASK_ID> タスクに付与された全タグ解除
poe cli task-tag clear-tag <TAG_ID> タグが付与された全タスク解除
poe cli task-tag exists <TASK_ID> <TAG_ID> 存在確認 (exit code 0/1)

# 付与
poe cli task-tag add 11111111-1111-1111-1111-111111111111 22222222-2222-2222-2222-222222222222

# 一覧 (タスクフィルタ)
poe cli task-tag list --task 11111111-1111-1111-1111-111111111111

# 存在確認 (シェル条件分岐に利用)
poe cli task-tag exists 11111111-1111-1111-1111-111111111111 22222222-2222-2222-2222-222222222222 && echo OK

内部ヘルパー対応表

ヘルパー 説明 Service メソッド
_create_relation 関連作成 create_task_tag
_delete_relation 単一関連削除 delete_task_tag
_list_all 全関連取得 get_all_task_tags
_list_by_task タスク ID で絞り込み get_task_tags_by_task_id
_list_by_tag タグ ID で絞り込み get_task_tags_by_tag_id
_get_single 単一取得 get_task_tag_by_task_and_tag
_exists 存在確認 check_task_tag_exists
_clear_task タスク関連一括削除 delete_task_tags_by_task_id
_clear_tag タグ関連一括削除 delete_task_tags_by_tag_id

API リファレンス

Task-Tag relation CLI commands.

タスクとタグの関連付け管理コマンド。

app = typer.Typer(help='タスクとタグ関連操作') module-attribute

console = Console() module-attribute

add(task_id, tag_id)

タスクにタグを関連付けるコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
task_id str

タスク UUID

必須
tag_id str

タグ UUID

必須
ソースコード位置: src/cli/commands/task_tag.py
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
@app.command("add", help="タスクへタグ付与")
@handle_cli_errors()
def add(task_id: str, tag_id: str) -> None:  # [AI GENERATED]
    """タスクにタグを関連付けるコマンド [AI GENERATED]

    Args:
        task_id: タスク UUID
        tag_id: タグ UUID
    """
    from logic.commands.task_tag_commands import CreateTaskTagCommand

    t_uuid = uuid.UUID(task_id)
    tag_uuid = uuid.UUID(tag_id)
    created = _create_relation(CreateTaskTagCommand(task_id=t_uuid, tag_id=tag_uuid))
    console.print(
        f"[green]Linked:[/green] task={created.result.task_id} tag={created.result.tag_id} "
        f"Elapsed: {created.elapsed:.2f}s"
    )

remove(task_id, tag_id)

タスクから指定タグ関連を削除するコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
task_id str

タスク UUID

必須
tag_id str

タグ UUID

必須
ソースコード位置: src/cli/commands/task_tag.py
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
@app.command("remove", help="タスクの特定タグ解除")
@handle_cli_errors()
def remove(task_id: str, tag_id: str) -> None:  # [AI GENERATED]
    """タスクから指定タグ関連を削除するコマンド [AI GENERATED]

    Args:
        task_id: タスク UUID
        tag_id: タグ UUID
    """
    from logic.commands.task_tag_commands import DeleteTaskTagCommand

    t_uuid = uuid.UUID(task_id)
    tag_uuid = uuid.UUID(tag_id)
    deleted = _delete_relation(DeleteTaskTagCommand(task_id=t_uuid, tag_id=tag_uuid))
    console.print(f"[red]Removed:[/red] task={t_uuid} tag={tag_uuid} Elapsed: {deleted.elapsed:.2f}s")

list_relations(task=typer.Option(None, '--task', help='特定タスクIDで絞り込み'), tag=typer.Option(None, '--tag', help='特定タグIDで絞り込み'))

タスク-タグ関連を一覧表示 (タスク or タグでフィルタ可) するコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
task str | None

タスク UUID (フィルタ)

Option(None, '--task', help='特定タスクIDで絞り込み')
tag str | None

タグ UUID (フィルタ)

Option(None, '--tag', help='特定タグIDで絞り込み')
ソースコード位置: src/cli/commands/task_tag.py
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
@app.command("list", help="関連一覧 (フィルタ対応)")
@handle_cli_errors()
def list_relations(
    task: str | None = typer.Option(None, "--task", help="特定タスクIDで絞り込み"),
    tag: str | None = typer.Option(None, "--tag", help="特定タグIDで絞り込み"),
) -> None:  # [AI GENERATED]
    """タスク-タグ関連を一覧表示 (タスク or タグでフィルタ可) するコマンド [AI GENERATED]

    Args:
        task: タスク UUID (フィルタ)
        tag: タグ UUID (フィルタ)
    """
    from logic.queries.task_tag_queries import (
        GetAllTaskTagsQuery,
        GetTaskTagsByTagIdQuery,
        GetTaskTagsByTaskIdQuery,
    )

    if task and tag:
        console.print("[yellow]--task と --tag は同時指定できません[/yellow]")
        raise typer.Exit(code=1)

    if task:
        rows = _list_by_task(GetTaskTagsByTaskIdQuery(task_id=uuid.UUID(task)))
        _print_relations(rows.result, f"task={task}", rows.elapsed)
        return
    if tag:
        rows = _list_by_tag(GetTaskTagsByTagIdQuery(tag_id=uuid.UUID(tag)))
        _print_relations(rows.result, f"tag={tag}", rows.elapsed)
        return

    rows = _list_all(GetAllTaskTagsQuery())
    _print_relations(rows.result, "all", rows.elapsed)

clear_task(task_id)

指定タスクに紐づく全てのタグ関連を削除するコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
task_id str

タスク UUID

必須
ソースコード位置: src/cli/commands/task_tag.py
196
197
198
199
200
201
202
203
204
205
206
207
208
@app.command("clear-task", help="タスクの全タグ関連削除")
@handle_cli_errors()
def clear_task(task_id: str) -> None:  # [AI GENERATED]
    """指定タスクに紐づく全てのタグ関連を削除するコマンド [AI GENERATED]

    Args:
        task_id: タスク UUID
    """
    from logic.commands.task_tag_commands import DeleteTaskTagsByTaskCommand

    t_uuid = uuid.UUID(task_id)
    cleared = _clear_task(DeleteTaskTagsByTaskCommand(task_id=t_uuid))
    console.print(f"[red]Cleared task relations:[/red] task={t_uuid} Elapsed: {cleared.elapsed:.2f}s")

clear_tag(tag_id)

指定タグが付与された全タスクとの関連を削除するコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
tag_id str

タグ UUID

必須
ソースコード位置: src/cli/commands/task_tag.py
211
212
213
214
215
216
217
218
219
220
221
222
223
@app.command("clear-tag", help="タグの全タスク関連削除")
@handle_cli_errors()
def clear_tag(tag_id: str) -> None:  # [AI GENERATED]
    """指定タグが付与された全タスクとの関連を削除するコマンド [AI GENERATED]

    Args:
        tag_id: タグ UUID
    """
    from logic.commands.task_tag_commands import DeleteTaskTagsByTagCommand

    tag_uuid = uuid.UUID(tag_id)
    cleared = _clear_tag(DeleteTaskTagsByTagCommand(tag_id=tag_uuid))
    console.print(f"[red]Cleared tag relations:[/red] tag={tag_uuid} Elapsed: {cleared.elapsed:.2f}s")

exists(task_id, tag_id)

タスク-タグ関連の存在を確認し exit code を返すコマンド [AI GENERATED]

引数:

名前 タイプ デスクリプション デフォルト
task_id str

タスク UUID

必須
tag_id str

タグ UUID

必須
ソースコード位置: src/cli/commands/task_tag.py
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
@app.command("exists", help="特定タスク-タグ関連が存在するか (exit code 0/1)")
@handle_cli_errors()
def exists(task_id: str, tag_id: str) -> None:  # [AI GENERATED]
    """タスク-タグ関連の存在を確認し exit code を返すコマンド [AI GENERATED]

    Args:
        task_id: タスク UUID
        tag_id: タグ UUID
    """
    from logic.queries.task_tag_queries import CheckTaskTagExistsQuery

    t_uuid = uuid.UUID(task_id)
    tag_uuid = uuid.UUID(tag_id)
    res = _exists(CheckTaskTagExistsQuery(task_id=t_uuid, tag_id=tag_uuid))
    console.print(
        f"[blue]Exists:[/blue] task={t_uuid} tag={tag_uuid} -> {'YES' if res.result else 'NO'} "
        f"Elapsed: {res.elapsed:.2f}s"
    )
    raise typer.Exit(code=0 if res.result else 1)