From a2932d1613e5aa9be240f9ff8dc824bfe9e3c55a Mon Sep 17 00:00:00 2001 From: ml729 <85370083+ml729@users.noreply.github.com> Date: Fri, 20 Jan 2023 23:44:11 -0500 Subject: [PATCH] unify 3 status endpoints and move status fetches to oasst_api_client --- website/src/lib/oasst_api_client.ts | 21 +++++++++ website/src/pages/admin/status/index.tsx | 47 +++---------------- website/src/pages/api/admin/stats.ts | 19 -------- website/src/pages/api/admin/status.ts | 26 ++++++++++ .../src/pages/api/admin/tasks_availability.ts | 24 ---------- website/src/pages/api/admin/tree_manager.ts | 18 ------- 6 files changed, 54 insertions(+), 101 deletions(-) delete mode 100644 website/src/pages/api/admin/stats.ts create mode 100644 website/src/pages/api/admin/status.ts delete mode 100644 website/src/pages/api/admin/tasks_availability.ts delete mode 100644 website/src/pages/api/admin/tree_manager.ts diff --git a/website/src/lib/oasst_api_client.ts b/website/src/lib/oasst_api_client.ts index 1e74b020..44d8ae7c 100644 --- a/website/src/lib/oasst_api_client.ts +++ b/website/src/lib/oasst_api_client.ts @@ -148,6 +148,27 @@ export class OasstApiClient { }); } + /** + * Returns the tasks availability information for given `user`. + */ + async fetch_tasks_availability(user: object): Promise { + return this.post("/api/v1/tasks/availability", user); + } + + /** + * Returns the message stats from the backend. + */ + async fetch_stats(): Promise { + return this.get("/api/v1/stats/"); + } + + /** + * Returns the tree manager stats from the backend. + */ + async fetch_tree_manager(): Promise { + return this.get("/api/v1/stats/tree_manager"); + } + /** * Returns the `BackendUser` associated with `user_id` */ diff --git a/website/src/pages/admin/status/index.tsx b/website/src/pages/admin/status/index.tsx index 5e1aba13..5d5d9ba4 100644 --- a/website/src/pages/admin/status/index.tsx +++ b/website/src/pages/admin/status/index.tsx @@ -56,46 +56,13 @@ const StatusIndex = ({ user }) => { router.push("/"); }, [router, session, status]); - const [availability, setAvailability] = useState(0); - const [stats, setStats] = useState(0); - const [treeManager, setTreeManager] = useState(0); + const { + data: dataStatus, + error: errorStatus, + isLoading: isLoadingStatus, + } = useSWRImmutable("/api/admin/status", get); - const { - data: dataAvailability, - error: errorAvailability, - isLoading: isLoadingAvailability, - } = useSWRImmutable("/api/admin/tasks_availability", get, { - onSuccess: (data) => { - setAvailability(data); - }, - onError: (error) => { - setAvailability(error); - }, - }); - const { - data: dataStats, - error: errorStats, - isLoading: isLoadingStats, - } = useSWRImmutable("/api/admin/stats", get, { - onSuccess: (data) => { - setStats(data); - }, - onError: (error) => { - setStats(error); - }, - }); - const { - data: dataTreeManager, - error: errorTreeManager, - isLoading: isLoadingTreeManager, - } = useSWRImmutable("/api/admin/tree_manager", get, { - onSuccess: (data) => { - setTreeManager(data); - }, - onError: (error) => { - setTreeManager(error); - }, - }); + const { tasksAvailability, stats, treeManager } = dataStatus || {}; return ( <> @@ -114,7 +81,7 @@ const StatusIndex = ({ user }) => {
-              {availability ? JSON.stringify(availability, null, 2) : }
+              {tasksAvailability ? JSON.stringify(tasksAvailability, null, 2) : }
             
diff --git a/website/src/pages/api/admin/stats.ts b/website/src/pages/api/admin/stats.ts deleted file mode 100644 index 7f8a43a0..00000000 --- a/website/src/pages/api/admin/stats.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { withRole } from "src/lib/auth"; - -/** - * Returns the message stats. - */ -const handler = withRole("admin", async (req, res) => { - const statsRes = await fetch(`${process.env.FASTAPI_URL}/api/v1/stats/`, { - method: "GET", - headers: { - "X-API-Key": process.env.FASTAPI_KEY, - }, - }); - - const stats = await statsRes.json(); - - res.status(statsRes.status).json(stats); -}); - -export default handler; diff --git a/website/src/pages/api/admin/status.ts b/website/src/pages/api/admin/status.ts new file mode 100644 index 00000000..4fb91857 --- /dev/null +++ b/website/src/pages/api/admin/status.ts @@ -0,0 +1,26 @@ +import { withRole } from "src/lib/auth"; +import { oasstApiClient } from "src/lib/oasst_api_client"; + +/** + * Returns tasks availability, stats, and tree manager stats. + */ +const handler = withRole("admin", async (req, res) => { + const dummy_user = { + id: "__dummy_user__", + display_name: "Dummy User", + auth_method: "local", + }; + const tasksAvailabilityData = await oasstApiClient.fetch_tasks_availability(dummy_user); + const statsData = await oasstApiClient.fetch_stats(); + const treeManagerData = await oasstApiClient.fetch_tree_manager(); + + const status = { + tasksAvailability: tasksAvailabilityData, + stats: statsData, + treeManager: treeManagerData, + }; + + res.status(200).json(status); +}); + +export default handler; diff --git a/website/src/pages/api/admin/tasks_availability.ts b/website/src/pages/api/admin/tasks_availability.ts deleted file mode 100644 index c7f1d1c5..00000000 --- a/website/src/pages/api/admin/tasks_availability.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { withRole } from "src/lib/auth"; - -/** - * Returns result of tasks availability query using a dummy user. - */ -const handler = withRole("admin", async (req, res) => { - const tasksAvailabilityRes = await fetch(`${process.env.FASTAPI_URL}/api/v1/tasks/availability`, { - method: "POST", - headers: { - "X-API-Key": process.env.FASTAPI_KEY, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - id: "__dummy_user__", - display_name: "Dummy User", - auth_method: "local", - }), - }); - const tasksAvailability = await tasksAvailabilityRes.json(); - - res.status(tasksAvailabilityRes.status).json(tasksAvailability); -}); - -export default handler; diff --git a/website/src/pages/api/admin/tree_manager.ts b/website/src/pages/api/admin/tree_manager.ts deleted file mode 100644 index c127f635..00000000 --- a/website/src/pages/api/admin/tree_manager.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { withRole } from "src/lib/auth"; - -/** - * Returns tree manager stats. - */ -const handler = withRole("admin", async (req, res) => { - const treeManagerRes = await fetch(`${process.env.FASTAPI_URL}/api/v1/stats/tree_manager`, { - method: "GET", - headers: { - "X-API-Key": process.env.FASTAPI_KEY, - }, - }); - const treeManager = await treeManagerRes.json(); - - res.status(treeManagerRes.status).json(treeManager); -}); - -export default handler;