award badges
This commit is contained in:
@@ -351,6 +351,32 @@ export function createBadgesService(pb: PocketBase) {
|
||||
);
|
||||
},
|
||||
|
||||
async awardManualBadge(playerId: string, badgeId: string): Promise<BadgeProgress> {
|
||||
// Get or create badge progress record
|
||||
const existingProgress = await pb.collection("badge_progress").getFirstListItem(
|
||||
`player = "${playerId}" && badge = "${badgeId}"`,
|
||||
{ expand: 'badge' }
|
||||
).catch(() => null);
|
||||
|
||||
if (existingProgress) {
|
||||
// Update existing progress to mark as earned
|
||||
const updated = await pb.collection("badge_progress").update(existingProgress.id, {
|
||||
progress: 1,
|
||||
earned: true,
|
||||
}, { expand: 'badge' });
|
||||
return transformBadgeProgress(updated);
|
||||
}
|
||||
|
||||
// Create new progress record
|
||||
const created = await pb.collection("badge_progress").create({
|
||||
badge: badgeId,
|
||||
player: playerId,
|
||||
progress: 1,
|
||||
earned: true,
|
||||
}, { expand: 'badge' });
|
||||
return transformBadgeProgress(created);
|
||||
},
|
||||
|
||||
async migrateBadgeProgress(): Promise<{
|
||||
success: boolean;
|
||||
playersProcessed: number;
|
||||
|
||||
Reference in New Issue
Block a user