refactor(achievement): extract achievement logic into AchievementService

Move EnsureExists + GetAllScores + compute loop from handler into
AchievementService.GetAll, and validation + ensure + increment into
AchievementService.Increment. Handlers now delegate to the service
layer for business logic while retaining protocol response building.

GetAchData stays as a pure function in handlers_achievement.go per plan.
This commit is contained in:
Houmgaor
2026-02-23 23:43:39 +01:00
parent bcdc4e0b7e
commit daacb76fb8
6 changed files with 262 additions and 33 deletions

View File

@@ -61,6 +61,11 @@ func ensureGuildService(s *Server) {
s.guildService = NewGuildService(s.guildRepo, s.mailRepo, s.charRepo, s.logger)
}
// ensureAchievementService wires the AchievementService from the server's current repos.
func ensureAchievementService(s *Server) {
s.achievementService = NewAchievementService(s.achievementRepo, s.logger)
}
// createMockSession creates a minimal Session for testing.
// Imported from v9.2.x-stable and adapted for main.
func createMockSession(charID uint32, server *Server) *Session {