add bulk upset to admin daily quest

This commit is contained in:
2025-12-13 18:00:52 +05:00
parent c111a15d5b
commit 13fcd40eb4

View File

@ -1,3 +1,4 @@
from typing import List
from fastapi import APIRouter, HTTPException, Body, Query from fastapi import APIRouter, HTTPException, Body, Query
from datetime import datetime, timezone from datetime import datetime, timezone
from app.db.database import db from app.db.database import db
@ -35,6 +36,29 @@ async def upsert_pool_item(payload: dict = Body(...)):
item = await pool.find_one({"key": key}, {"_id": 0}) item = await pool.find_one({"key": key}, {"_id": 0})
return {"ok": True, "item": item} return {"ok": True, "item": item}
@router.post("/pool/bulk_upsert")
async def bulk_upsert_pool_items(items: List[dict] = Body(...)):
if not isinstance(items, list):
raise HTTPException(status_code=400, detail="Body must be a list of objects")
out = []
for payload in items:
key = payload.get("key")
if not key or not isinstance(key, str):
continue
payload.setdefault("enabled", True)
payload.setdefault("weight", 1)
payload.setdefault("min_required", 1)
payload.setdefault("max_required", payload["min_required"])
payload.setdefault("reward_per_unit", 1)
payload["updated_at"] = datetime.now(timezone.utc).replace(tzinfo=None)
await pool.update_one({"key": key}, {"$set": payload}, upsert=True)
out.append(key)
return {"ok": True, "upserted": out, "count": len(out)}
@router.post("/pool/disable") @router.post("/pool/disable")
async def disable_pool_item(key: str = Query(...)): async def disable_pool_item(key: str = Query(...)):
res = await pool.update_one({"key": key}, {"$set": {"enabled": False}}) res = await pool.update_one({"key": key}, {"$set": {"enabled": False}})