package activityapi import ( "hyapp/services/gateway-service/internal/client" "hyapp/services/gateway-service/internal/transport/http/httproutes" ) // Handler owns activity-facing HTTP endpoints. // It keeps task and registration reward reads/writes behind activity-service, with gateway only adding auth context. type Handler struct { taskClient client.TaskClient growthLevelClient client.GrowthLevelClient achievementClient client.AchievementClient walletClient client.WalletClient registrationReward client.RegistrationRewardClient sevenDayCheckIn client.SevenDayCheckInClient } type Config struct { TaskClient client.TaskClient GrowthLevelClient client.GrowthLevelClient AchievementClient client.AchievementClient WalletClient client.WalletClient RegistrationReward client.RegistrationRewardClient SevenDayCheckIn client.SevenDayCheckInClient } func New(config Config) *Handler { return &Handler{ taskClient: config.TaskClient, growthLevelClient: config.GrowthLevelClient, achievementClient: config.AchievementClient, walletClient: config.WalletClient, registrationReward: config.RegistrationReward, sevenDayCheckIn: config.SevenDayCheckIn, } } func (h *Handler) TaskHandlers() httproutes.TaskHandlers { return httproutes.TaskHandlers{ ListTaskTabs: h.listTaskTabs, ClaimTaskReward: h.claimTaskReward, GetRegistrationRewardEligibility: h.getRegistrationRewardEligibility, GetSevenDayCheckInStatus: h.getSevenDayCheckInStatus, SignSevenDayCheckIn: h.signSevenDayCheckIn, } } func (h *Handler) LevelHandlers() httproutes.LevelHandlers { return httproutes.LevelHandlers{ GetMyLevelOverview: h.getMyLevelOverview, GetLevelTrack: h.getLevelTrack, ListLevelRewards: h.listLevelRewards, } } func (h *Handler) AchievementHandlers() httproutes.AchievementHandlers { return httproutes.AchievementHandlers{ ListAchievements: h.listAchievements, ListMyBadges: h.listMyBadges, SetBadgeDisplay: h.setBadgeDisplay, } }