add bulk upset to admin daily quest
This commit is contained in:
@ -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}})
|
||||
|
||||
Reference in New Issue
Block a user