2025-06-20 05:51:38 +00:00

54 lines
1.9 KiB
Python

# 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);
"""