sync.py 969 B

1234567891011121314151617181920212223
  1. from fastapi import APIRouter, Depends, HTTPException
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from backend.app.core.dependencies import require_permissions
  4. from backend.app.db.session import get_db
  5. from backend.app.services.center_sync import get_sync_status, get_sync_token, trigger_center_sync
  6. router = APIRouter(prefix="/sync", tags=["sync"])
  7. @router.post("/center", dependencies=[Depends(require_permissions(["users.view"]))])
  8. async def sync_center(db: AsyncSession = Depends(get_db)):
  9. token = await get_sync_token(db)
  10. if not token:
  11. raise HTTPException(status_code=400, detail="未找到中台同步 token,请先通过带 token 的地址登录")
  12. await trigger_center_sync(token, restart=True, wait=False)
  13. return {"success": True}
  14. @router.get("/center/status", dependencies=[Depends(require_permissions(["users.view"]))])
  15. async def sync_center_status(db: AsyncSession = Depends(get_db)):
  16. return await get_sync_status(db)