feat : initial commit

This commit is contained in:
2025-06-20 05:51:38 +00:00
commit 00eae37abc
26 changed files with 924 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
# app/repositories/queries/__init__.py
"""
HealthSync Motivator Batch 쿼리 패키지
"""
from .base_queries import BaseQueries
from .user_queries import UserQueries
from .goal_queries import GoalQueries
from .chat_queries import ChatQueries
__all__ = ["BaseQueries", "UserQueries", "GoalQueries", "ChatQueries"]
+13
View File
@@ -0,0 +1,13 @@
# app/repositories/queries/base_queries.py
"""
HealthSync Motivator Batch 기본 쿼리
"""
class BaseQueries:
"""기본 시스템 쿼리"""
# 데이터베이스 연결 테스트
CONNECTION_TEST = "SELECT 1"
# 현재 시간 조회
CURRENT_TIMESTAMP = "SELECT NOW()"
+23
View File
@@ -0,0 +1,23 @@
# app/repositories/queries/chat_queries.py
"""
HealthSync Motivator Batch 채팅 메시지 관련 쿼리
"""
class ChatQueries:
"""채팅 메시지 관련 쿼리"""
# 독려 메시지 저장 (수정된 쿼리)
INSERT_ENCOURAGEMENT_MESSAGE = """
INSERT INTO intelligence_service.chat_message
(member_serial_number, message_type, message_content, response_content, created_at)
VALUES (:member_serial_number, :message_type, :message_content, :response_content, :created_at)
"""
# 오늘 이미 독려 메시지를 받았는지 확인
CHECK_TODAY_ENCOURAGEMENT = """
SELECT COUNT(*) as count
FROM intelligence_service.chat_message cm
WHERE cm.member_serial_number = :user_id
AND cm.message_type = 'encouragement'
AND DATE(cm.created_at) = CURRENT_DATE
"""
+54
View File
@@ -0,0 +1,54 @@
# 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);
"""
+28
View File
@@ -0,0 +1,28 @@
# app/repositories/queries/user_queries.py
"""
HealthSync Motivator Batch 사용자 관련 쿼리
"""
class UserQueries:
"""사용자 관련 쿼리"""
# 활성 사용자 목록 조회
GET_ACTIVE_USERS = """
SELECT
u.member_serial_number,
u.name,
u.occupation
FROM user_service.user u
WHERE u.last_login_at >= NOW() - INTERVAL '30 days'
ORDER BY u.member_serial_number
"""
# 특정 사용자 정보 조회
GET_USER_BY_ID = """
SELECT
u.member_serial_number,
u.name,
u.occupation
FROM user_service.user u
WHERE u.member_serial_number = :user_id
"""