ns = params_kw.copy() for k,v in ns.items(): if v == "NaN" or v == "null": ns[k] = None page = int(ns.get("page", 1)) pagerows = int(ns.get("rows", 20)) offset = (page - 1) * pagerows ns["pagerows"] = pagerows ns["offset"] = offset env = request._run_ns async with get_sor_context(env, "tenant") as sor: recs = await sor.sqlExe("SELECT count(*) as total FROM tenant_domain", {}) total = recs[0].total if recs else 0 recs = await sor.sqlExe("SELECT * FROM tenant_domain ORDER BY created_at desc LIMIT ${pagerows}$ OFFSET ${offset}$", ns) return {"total": total, "rows": [dict(r) for r in recs]}