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
from synclean.api.synapse import SynapseApiClient
from synclean.cli.user_commands import user
from synclean.config.settings import SettingsManager
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
pass_api = click.make_pass_decorator(SynapseApiClient)
@ -41,4 +42,5 @@ def settings():
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
from synclean.api.synapse import SynapseApiClient
from synclean.api.users import UserAPI
from synclean.models.enums import UserOrderBy, Direction
from synclean.models.pagination import UserPaginationParams
from synclean.service.user_service import UserService
pass_api = click.make_pass_decorator(SynapseApiClient)
user = click.Group(name="user", help="User commands.")
@user.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("--limit", "-l", default=10, help="Number of users to display per page.")
@click.option("--offset", "-o", default=0, help="Number of the users to start from.")
@click.option("--search", "-s", help="Search term to filter users 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.")
type=click.Choice(["name", "display_name", "media_length", "media_count"]),
default="name", 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)")
@ -30,26 +28,14 @@ def user_ls(
order_by: str,
direction: str
):
order_by_enum = UserOrderBy(order_by)
direction_enum = Direction(direction)
users_api = UserAPI(api)
user_api = UserAPI(api)
user_service = UserService(user_api)
while True:
pagination_params = UserPaginationParams(limit, offset, order_by_enum, direction_enum, search)
users = users_api.get_users_list_by_media(pagination_params)
users = user_service.get_users_list(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.")
click.echo(u)
offset += limit
if not click.confirm("Show more users?", default=True):