"""Example - How to get list of orders for 1 last hour (maximum requesting period)."""
import asyncio
import datetime
import logging
import os

from t_tech.invest import AsyncClient
from t_tech.invest.schemas import OrderExecutionReportStatus

TOKEN = os.environ["INVEST_TOKEN"]

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


async def main():
    async with AsyncClient(TOKEN) as client:
        response = await client.users.get_accounts()
        account, *_ = response.accounts
        account_id = account.id

        now = datetime.datetime.now()
        orders = await client.orders.get_orders(
            account_id=account_id,
            from_=now - datetime.timedelta(hours=1),
            to=now,
            # filter only executed or partially executed orders
            execution_status=[
                OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_FILL,
                OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_PARTIALLYFILL,
            ],
        )
    print("Orders list:")
    for order in orders.orders:
        print(order)


if __name__ == "__main__":
    asyncio.run(main())
