from typing import List from campaigns.repositories.campaigns_repository import CampaignsRepository from campaigns.schemas import CampaignObjectiveResponse, CampaignGoalResponse class CampaignsGoalsService: repository = CampaignsRepository() def get_all_goals(self) -> List[CampaignGoalResponse]: goals = self.repository.get_campaign_goals() result = [] for goal in goals: sorted_objectives = sorted(goal.objectives, key=lambda objective: objective.name) objective_models = [CampaignObjectiveResponse(obj.id, obj.name) for obj in sorted_objectives] goal_model = CampaignGoalResponse(goal.id, goal.name, objective_models) result.append(goal_model) return result