# app/repositories/queries/goal_queries.py """ HealthSync Motivator Batch 목표/미션 관련 쿼리 """ class GoalQueries: """목표/미션 관련 쿼리""" # 사용자별 활성 미션 조회 GET_ACTIVE_MISSIONS_BY_USER = """ SELECT umg.mission_id, umg.member_serial_number, umg.mission_name, umg.mission_description, umg.daily_target_count, umg.performance_date FROM goal_service.user_mission_goal umg WHERE umg.member_serial_number = :user_id AND umg.is_active = true AND umg.performance_date = CURRENT_DATE """ # 오늘 완료된 미션 조회 GET_TODAY_COMPLETED_MISSIONS = """ SELECT mch.mission_id, mch.member_serial_number, mch.daily_target_count, mch.daily_completed_count FROM goal_service.mission_completion_history mch WHERE mch.member_serial_number = :user_id AND mch.completion_date = CURRENT_DATE AND mch.daily_completed_count >= mch.daily_target_count """ # 미완료 미션 조회 (오늘 활성 미션 중 완료되지 않은 것들) GET_INCOMPLETE_MISSIONS = """ SELECT umg.mission_id, umg.mission_name, umg.mission_description, mch.daily_completed_count, umg.daily_target_count, mch.completion_date FROM goal_service.user_mission_goal umg LEFT JOIN goal_service.mission_completion_history mch ON umg.mission_id = mch.mission_id AND umg.member_serial_number = mch.member_serial_number AND mch.completion_date = CURRENT_DATE WHERE umg.member_serial_number = :user_id AND ((mch.completion_date = CURRENT_DATE AND mch.daily_completed_count < mch.daily_target_count) OR mch.completion_date IS NULL); """