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 datetime import datetime, timezone
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})
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")
async def disable_pool_item(key: str = Query(...)):
res = await pool.update_one({"key": key}, {"$set": {"enabled": False}})