54 lines
1.9 KiB
Python
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);
|
|
""" |