mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-09 20:30:54 -05:00
33 lines
979 B
TypeScript
33 lines
979 B
TypeScript
import { Prisma } from "@prisma/client";
|
|
import prisma from "prisma/client";
|
|
|
|
export type GetBuildsByWeaponData = Prisma.PromiseReturnType<
|
|
typeof getBuildsByWeapon
|
|
>;
|
|
|
|
type BuildsByWeapon = Prisma.PromiseReturnType<typeof getBuildsByWeaponQuery>;
|
|
|
|
const getBuildsByWeaponQuery = async (weapon: string) =>
|
|
prisma.build.findMany({
|
|
where: { weapon },
|
|
orderBy: [{ top500: "desc" }, { jpn: "desc" }, { updatedAt: "desc" }],
|
|
include: { user: true },
|
|
});
|
|
|
|
export const getBuildsByWeapon = async (weapon: string) =>
|
|
getBuildsByWeaponQuery(weapon).then((builds) =>
|
|
Array.from(
|
|
builds
|
|
.reduce((usersBuild, build) => {
|
|
if (usersBuild.has(build.userId)) {
|
|
usersBuild.get(build.userId)!.push(build);
|
|
} else {
|
|
usersBuild.set(build.userId, [build]);
|
|
}
|
|
|
|
return usersBuild;
|
|
}, new Map<number, BuildsByWeapon>())
|
|
.entries()
|
|
).map(([_userId, buildArray]) => buildArray)
|
|
);
|