XYHLF / App /routers /utt /utils.py
Mbonea's picture
initial commit
9d4bd7c
from datetime import datetime
from tortoise.transactions import in_transaction
from App.routers.tasks.models import ImportTask
from .models import UTTFund, UTTFundData
from .service import fetch_all_utt_data, parse_utt_api_row
async def run_utt_import_task(task_id: int):
try:
await ImportTask.filter(id=task_id).update(status="running")
raw_data = await fetch_all_utt_data()
if not raw_data:
await ImportTask.filter(id=task_id).update(status="failed", details={"error": "No data"})
return
for row in raw_data:
symbol = row["internal_name"]
name = row["scheme_name"]
fund, _ = await UTTFund.get_or_create(symbol=symbol, defaults={"name": name})
parsed = parse_utt_api_row(row)
exists = await UTTFundData.exists(fund=fund, date=parsed["date"])
if not exists:
await UTTFundData.create(fund=fund, **parsed)
await ImportTask.filter(id=task_id).update(status="completed")
except Exception as e:
await ImportTask.filter(id=task_id).update(status="failed", details={"error": str(e)})