51 lines
1.8 KiB
TypeScript
51 lines
1.8 KiB
TypeScript
import { toServerResult } from "@/lib/tanstack-query/utils/to-server-result";
|
|
import { superTokensAdminFunctionMiddleware, superTokensFunctionMiddleware } from "@/utils/supertokens";
|
|
import { createServerFn } from "@tanstack/react-start";
|
|
import { pbAdmin } from "@/lib/pocketbase/client";
|
|
import { z } from "zod";
|
|
import { emitServerEvent } from "@/lib/events/emitter";
|
|
import { getBadgeMigrationJobStatus, startBadgeMigration } from "./migration.server";
|
|
|
|
export const getPlayerBadges = createServerFn()
|
|
.validator(z.string())
|
|
.middleware([superTokensFunctionMiddleware])
|
|
.handler(async ({ data: playerId }) =>
|
|
toServerResult(() => pbAdmin.getPlayerBadgeProgress(playerId))
|
|
);
|
|
|
|
export const migrateBadgeProgress = createServerFn()
|
|
.middleware([superTokensAdminFunctionMiddleware])
|
|
.handler(async () =>
|
|
toServerResult(async () => startBadgeMigration())
|
|
);
|
|
|
|
export const getBadgeMigrationStatus = createServerFn()
|
|
.middleware([superTokensAdminFunctionMiddleware])
|
|
.handler(async () =>
|
|
toServerResult(async () => getBadgeMigrationJobStatus())
|
|
);
|
|
|
|
export const getAllBadges = createServerFn()
|
|
.middleware([superTokensFunctionMiddleware])
|
|
.handler(async () =>
|
|
toServerResult(() => pbAdmin.listBadges())
|
|
);
|
|
|
|
export const getAllEarnedBadges = createServerFn()
|
|
.middleware([superTokensFunctionMiddleware])
|
|
.handler(async () => toServerResult(() => pbAdmin.listEarnedBadges()));
|
|
|
|
export const awardManualBadge = createServerFn()
|
|
.validator(z.object({
|
|
playerId: z.string(),
|
|
badgeId: z.string(),
|
|
}))
|
|
.middleware([superTokensAdminFunctionMiddleware])
|
|
.handler(async ({ data }) =>
|
|
toServerResult(async () => {
|
|
const result = await pbAdmin.awardManualBadge(data.playerId, data.badgeId);
|
|
emitServerEvent({ type: "badge", playerId: data.playerId });
|
|
return result;
|
|
})
|
|
);
|