github-leaderboard/server/jobs/fetch-repo-data.ts

27 lines
685 B
TypeScript

import db from "@server/db";
import github from "@server/lib/github";
import queue from "@server/lib/queue";
import { repositories } from "@server/models";
import { eq } from "drizzle-orm";
export type FetchRepoDataJobType = {
id: number;
uri: string;
};
export const fetchRepoData = async (data: FetchRepoDataJobType) => {
const details = await github.getRepoDetails(data.uri);
const [result] = await db
.update(repositories)
.set({ languages: details.languages })
.where(eq(repositories.id, data.id))
.returning();
if (!result) {
throw new Error("Repository not found!");
}
await queue.add("calculateUserPoints", { userId: result.userId });
};