Files
leggen/leggen/commands/sync.py
2024-03-29 16:56:45 +00:00

35 lines
1.0 KiB
Python

import click
from leggen.main import cli
from leggen.utils.database import save_transactions
from leggen.utils.network import get
from leggen.utils.notifications import send_notification
from leggen.utils.text import error, info
@cli.command()
@click.pass_context
def sync(ctx: click.Context):
"""
Sync all transactions with database
"""
info("Getting accounts details")
res = get(ctx, "/requisitions/")
accounts = set()
for r in res.get("results", []):
accounts.update(r.get("accounts", []))
info(f"Syncing transactions for {len(accounts)} accounts")
for account in accounts:
try:
new_transactions = save_transactions(ctx, account)
except Exception as e:
error(f"[{account}] Error: Sync failed, skipping account, exception: {e}")
continue
try:
send_notification(ctx, new_transactions)
except Exception as e:
error(f"[{account}] Error: Notification failed, exception: {e}")
continue