You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

27 lines
842 B

import { listFeedsForUser, syncFeed } from "#server/service/rss";
export default defineWrappedResponseHandler(async (event) => {
const user = await event.context.auth.requireUser();
let body: { feedId?: number } = {};
try {
body = await readBody<{ feedId?: number }>(event);
} catch {
body = {};
}
if (body.feedId !== undefined && Number.isInteger(body.feedId)) {
const feeds = await listFeedsForUser(user.id);
if (!feeds.some((f) => f.id === body.feedId)) {
throw createError({ statusCode: 404, statusMessage: "订阅不存在" });
}
const r = await syncFeed(body.feedId);
return R.success({ results: [r] });
}
const feeds = await listFeedsForUser(user.id);
const results = [];
for (const f of feeds) {
results.push(await syncFeed(f.id));
}
return R.success({ results });
});