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 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}})
|
||||||
|
|||||||
Reference in New Issue
Block a user