Add grouping categories feature
This commit is contained in:
@ -10,10 +10,12 @@ import {
|
||||
deleteFeed,
|
||||
fetchAllEpisodes,
|
||||
fetchEpisodesWithArticles,
|
||||
getAllCategories,
|
||||
getAllFeedsIncludingInactive,
|
||||
getFeedById,
|
||||
getFeedByUrl,
|
||||
getFeedRequests,
|
||||
getFeedsByCategory,
|
||||
getFeedsGroupedByCategory,
|
||||
toggleFeedActive,
|
||||
updateFeedRequestStatus,
|
||||
} from "./services/database.js";
|
||||
@ -199,6 +201,38 @@ app.patch("/api/admin/feeds/:id/toggle", async (c) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Categories management
|
||||
app.get("/api/admin/categories", async (c) => {
|
||||
try {
|
||||
const categories = await getAllCategories();
|
||||
return c.json(categories);
|
||||
} catch (error) {
|
||||
console.error("Error fetching categories:", error);
|
||||
return c.json({ error: "Failed to fetch categories" }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/api/admin/feeds/by-category", async (c) => {
|
||||
try {
|
||||
const category = c.req.query("category");
|
||||
const feeds = await getFeedsByCategory(category);
|
||||
return c.json(feeds);
|
||||
} catch (error) {
|
||||
console.error("Error fetching feeds by category:", error);
|
||||
return c.json({ error: "Failed to fetch feeds by category" }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
app.get("/api/admin/feeds/grouped-by-category", async (c) => {
|
||||
try {
|
||||
const groupedFeeds = await getFeedsGroupedByCategory();
|
||||
return c.json(groupedFeeds);
|
||||
} catch (error) {
|
||||
console.error("Error fetching feeds grouped by category:", error);
|
||||
return c.json({ error: "Failed to fetch feeds grouped by category" }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
// Episodes management
|
||||
app.get("/api/admin/episodes", async (c) => {
|
||||
try {
|
||||
@ -349,7 +383,10 @@ app.get("/api/admin/db-diagnostic", async (c) => {
|
||||
} catch (error) {
|
||||
console.error("Error running database diagnostic:", error);
|
||||
return c.json(
|
||||
{ error: "Failed to run database diagnostic", details: error.message },
|
||||
{
|
||||
error: "Failed to run database diagnostic",
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
},
|
||||
500,
|
||||
);
|
||||
}
|
||||
@ -635,16 +672,6 @@ app.get("/", serveAdminIndex);
|
||||
app.get("/index.html", serveAdminIndex);
|
||||
app.get("*", serveAdminIndex);
|
||||
|
||||
// Utility functions
|
||||
async function runBatchProcess(): Promise<void> {
|
||||
try {
|
||||
await batchProcess();
|
||||
} catch (error) {
|
||||
console.error("Admin batch process failed:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// Start admin server
|
||||
serve(
|
||||
{
|
||||
|
Reference in New Issue
Block a user