コンテンツにスキップ

Tag コマンド

タグ管理操作。

一覧

poe cli tag list

作成

poe cli tag create --name "#urgent"

検索

poe cli tag search urgent

取得

poe cli tag get <TAG_ID>

更新

poe cli tag update <TAG_ID> --name "#important"

削除

poe cli tag delete <TAG_ID>
poe cli tag delete <TAG_ID> --force

内部ヘルパー対応表

ヘルパー 説明 Service メソッド
_get_all_tags 全件取得 get_all_tags
_create_tag 作成 create_tag
_search_tags 名前部分一致検索 search_tags_by_name
_get_tag 単体取得 get_tag_by_id
_update_tag 更新 update_tag
_delete_tag 削除 delete_tag

API リファレンス

Tag related CLI commands.

タグ CRUD 操作用のサブコマンド。

app = typer.Typer(help='タグ CRUD / 検索') module-attribute

console = Console() module-attribute

list_tags()

全タグを一覧表示するコマンド [AI GENERATED]

ソースコード位置: src/cli/commands/tag.py
86
87
88
89
90
91
92
93
94
95
96
97
98
@app.command("list", help="全タグ一覧")
@handle_cli_errors()
def list_tags() -> None:
    """全タグを一覧表示するコマンド [AI GENERATED]"""
    from logic.queries.tag_queries import GetAllTagsQuery

    tags = _get_all_tags(GetAllTagsQuery())
    table = Table(title="Tags", box=box.SIMPLE, caption=f"Total: {len(tags.result)} Elapsed: {tags.elapsed:.2f}s")
    table.add_column("ID")
    table.add_column("Name")
    for t in tags.result:
        table.add_row(str(t.id), t.name)
    console.print(table)

create_tag(name=typer.Option(None, '--name', '-n'))

新しいタグを作成するコマンド [AI GENERATED]

引数:

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

タグ名 (未指定なら対話入力)

Option(None, '--name', '-n')
ソースコード位置: src/cli/commands/tag.py
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
@app.command("create", help="タグ作成")
@handle_cli_errors()
def create_tag(name: str | None = typer.Option(None, "--name", "-n")) -> None:
    """新しいタグを作成するコマンド [AI GENERATED]

    Args:
        name: タグ名 (未指定なら対話入力)
    """
    from logic.commands.tag_commands import CreateTagCommand

    if name is None:
        name = questionary.text("Tag name?").ask()
    if name is None:
        msg = "name 必須"
        raise typer.BadParameter(msg)
    created = _create_tag(CreateTagCommand(name=name))
    console.print(
        f"[green]Created:[/green] {created.result.name} ({created.result.id}) Elapsed: {created.elapsed:.2f}s"
    )

search_tags(query)

タグ名の部分一致検索を行うコマンド [AI GENERATED]

引数:

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

検索語

必須
ソースコード位置: src/cli/commands/tag.py
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
@app.command("search", help="名前部分一致")
@handle_cli_errors()
def search_tags(query: str) -> None:
    """タグ名の部分一致検索を行うコマンド [AI GENERATED]

    Args:
        query: 検索語
    """
    from logic.queries.tag_queries import SearchTagsByNameQuery

    results = _search_tags(SearchTagsByNameQuery(name_query=query))
    if not results.result:
        console.print("[yellow]No results[/yellow]")
        raise typer.Exit(code=0)
    table = Table(
        title=f"Search: {query}",
        box=box.SIMPLE,
        caption=f"Hits: {len(results.result)} Elapsed: {results.elapsed:.2f}s",
    )
    table.add_column("ID")
    table.add_column("Name")
    for t in results.result:
        table.add_row(str(t.id), t.name)
    console.print(table)

get_tag(tag_id)

ID 指定でタグ詳細を取得するコマンド [AI GENERATED]

引数:

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

タグ UUID 文字列

必須
ソースコード位置: src/cli/commands/tag.py
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
@app.command("get", help="ID取得")
@handle_cli_errors()
def get_tag(tag_id: str) -> None:
    """ID 指定でタグ詳細を取得するコマンド [AI GENERATED]

    Args:
        tag_id: タグ UUID 文字列
    """
    from logic.queries.tag_queries import GetTagByIdQuery

    tid = uuid.UUID(tag_id)
    tag = _get_tag(GetTagByIdQuery(tag_id=tid))
    if tag.result is None:
        console.print("[yellow]Not found[/yellow]")
        raise typer.Exit(code=1)
    table = Table(title="Tag Detail", box=box.MINIMAL_DOUBLE_HEAD, caption=f"Elapsed: {tag.elapsed:.2f}s")
    table.add_column("Field")
    table.add_column("Value")
    table.add_row("ID", str(tag.result.id))
    table.add_row("Name", tag.result.name)
    console.print(table)

update_tag(tag_id, name=typer.Option(None, '--name', '-n'))

タグ名を変更するコマンド [AI GENERATED]

引数:

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

タグ UUID

必須
name str | None

新しいタグ名

Option(None, '--name', '-n')
ソースコード位置: src/cli/commands/tag.py
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
@app.command("update", help="タグ名変更")
@handle_cli_errors()
def update_tag(tag_id: str, name: str | None = typer.Option(None, "--name", "-n")) -> None:
    """タグ名を変更するコマンド [AI GENERATED]

    Args:
        tag_id: タグ UUID
        name: 新しいタグ名
    """
    from logic.commands.tag_commands import UpdateTagCommand

    tid = uuid.UUID(tag_id)
    if name is None:
        name = questionary.text("New name?").ask()
    if name is None:
        console.print("[yellow]Cancelled[/yellow]")
        raise typer.Exit(code=1)
    updated = _update_tag(UpdateTagCommand(tag_id=tid, name=name))
    console.print(f"[green]Updated:[/green] {updated.result.name} Elapsed: {updated.elapsed:.2f}s")

delete_tag(tag_id, force=typer.Option(default=False, help='関連があっても削除'))

タグを削除するコマンド [AI GENERATED]

引数:

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

削除対象 UUID

必須
force bool

確認を省略するか

Option(default=False, help='関連があっても削除')
ソースコード位置: src/cli/commands/tag.py
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
@app.command("delete", help="タグ削除")
@handle_cli_errors()
def delete_tag(tag_id: str, force: bool = typer.Option(default=False, help="関連があっても削除")) -> None:
    """タグを削除するコマンド [AI GENERATED]

    Args:
        tag_id: 削除対象 UUID
        force: 確認を省略するか
    """
    from logic.commands.tag_commands import DeleteTagCommand

    tid = uuid.UUID(tag_id)
    if (not force) and (not questionary.confirm("Delete this tag?").ask()):
        console.print("[yellow]Cancelled[/yellow]")
        raise typer.Exit(code=1)
    deleted = _delete_tag(DeleteTagCommand(tag_id=tid))
    console.print(f"[red]Deleted:[/red] {tid} Elapsed: {deleted.elapsed:.2f}s")