change user_commands.py to media_commands.py and add new user_commands.py

This commit is contained in:
Hirad 2025-07-18 11:17:56 +03:30
parent e3baca0fa1
commit abafe60058
3 changed files with 63 additions and 26 deletions

View file

@ -1,8 +1,9 @@
import click import click
from synclean.api.synapse import SynapseApiClient from synclean.api.synapse import SynapseApiClient
from synclean.cli.user_commands import user
from synclean.config.settings import SettingsManager from synclean.config.settings import SettingsManager
from synclean.cli.room_commands import room from synclean.cli.room_commands import room
from synclean.cli.user_commands import user from synclean.cli.media_commands import media
from synclean.models.config import SynapseConfig from synclean.models.config import SynapseConfig
pass_api = click.make_pass_decorator(SynapseApiClient) pass_api = click.make_pass_decorator(SynapseApiClient)
@ -41,4 +42,5 @@ def settings():
cli.add_command(room) cli.add_command(room)
cli.add_command(user) cli.add_command(media)
cli.add_command(user)

View file

@ -0,0 +1,49 @@
from typing import Optional
import click
from synclean.api.synapse import SynapseApiClient
from synclean.api.users import UserAPI
from synclean.service.user_service import UserService
pass_api = click.make_pass_decorator(SynapseApiClient)
media = click.Group(name="media", help="Media commands.")
@media.command("ls")
@click.option("--limit", "-l", default=10, help="Number of users to list.")
@click.option("--offset", "-o", default=0, help="Number of the room to start from.")
@click.option("--search", "-s", help="Search term to filter by.")
@click.option("--order-by", "-O",
type=click.Choice(["user_id", "display_name", "media_length", "media_count"]),
default="media_length", help="Field to order result by.")
@click.option("--direction", "-d",
type=click.Choice(["f", "b"]),
default="b", help="Direction to order result by. (f=forward, b=backward)")
@pass_api
def media_ls(
api: SynapseApiClient,
limit: int,
offset: int,
search: Optional[str],
order_by: str,
direction: str
):
users_api = UserAPI(api)
user_service = UserService(users_api)
while True:
users = user_service.get_users_list_by_media(limit, offset, order_by, direction, search)
if users:
for u in users.users:
click.echo(f"Display name: {u.display_name}")
click.echo(f"Media count: {u.media_count}")
click.echo(f"Media length: {u.media_length_mb()}MB")
click.echo(f"User ID: {u.user_id}")
click.echo("=" * 40)
else:
click.echo("No users found.")
offset += limit
if not click.confirm("Show more users?", default=True):
break

View file

@ -2,22 +2,20 @@ from typing import Optional
import click import click
from synclean.api.synapse import SynapseApiClient from synclean.api.synapse import SynapseApiClient
from synclean.api.users import UserAPI from synclean.api.users import UserAPI
from synclean.models.enums import UserOrderBy, Direction from synclean.service.user_service import UserService
from synclean.models.pagination import UserPaginationParams
pass_api = click.make_pass_decorator(SynapseApiClient) pass_api = click.make_pass_decorator(SynapseApiClient)
user = click.Group(name="user", help="User commands.") user = click.Group(name="user", help="User commands.")
@user.command("ls") @user.command("ls")
@click.option("--limit", "-l", default=10, help="Number of users to list.") @click.option("--limit", "-l", default=10, help="Number of users to display per page.")
@click.option("--offset", "-o", default=0, help="Number of the room to start from.") @click.option("--offset", "-o", default=0, help="Number of the users to start from.")
@click.option("--search", "-s", help="Search term to filter by.") @click.option("--search", "-s", help="Search term to filter users by.")
@click.option("--order-by", "-O", @click.option("--order-by", "-O",
type=click.Choice(["user_id", "display_name", "media_length", "media_count"]), type=click.Choice(["name", "display_name", "media_length", "media_count"]),
default="media_length", help="Field to order result by.") default="name", help="Field to order result by.")
@click.option("--direction", "-d", @click.option("--direction", "-d",
type=click.Choice(["f", "b"]), type=click.Choice(["f", "b"]),
default="b", help="Direction to order result by. (f=forward, b=backward)") default="b", help="Direction to order result by. (f=forward, b=backward)")
@ -30,26 +28,14 @@ def user_ls(
order_by: str, order_by: str,
direction: str direction: str
): ):
user_api = UserAPI(api)
order_by_enum = UserOrderBy(order_by) user_service = UserService(user_api)
direction_enum = Direction(direction)
users_api = UserAPI(api)
while True: while True:
pagination_params = UserPaginationParams(limit, offset, order_by_enum, direction_enum, search) users = user_service.get_users_list(limit, offset, order_by, direction, search)
users = users_api.get_users_list_by_media(pagination_params)
if users: if users:
for u in users.users: for u in users.users:
click.echo(f"Display name: {u.display_name}") click.echo(u)
click.echo(f"Media count: {u.media_count}")
click.echo(f"Media length: {u.media_length_mb()}MB")
click.echo(f"User ID: {u.user_id}")
click.echo("=" * 40)
else:
click.echo("No users found.")
offset += limit offset += limit
if not click.confirm("Show more users?", default=True): if not click.confirm("Show more users?", default=True):