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
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 });
|
|
});
|
|
|