feat : initial commit
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
# app/repositories/__init__.py
|
||||
"""
|
||||
HealthSync Motivator Batch 리포지토리 패키지
|
||||
"""
|
||||
@@ -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"]
|
||||
@@ -0,0 +1,13 @@
|
||||
# app/repositories/queries/base_queries.py
|
||||
"""
|
||||
HealthSync Motivator Batch 기본 쿼리
|
||||
"""
|
||||
|
||||
class BaseQueries:
|
||||
"""기본 시스템 쿼리"""
|
||||
|
||||
# 데이터베이스 연결 테스트
|
||||
CONNECTION_TEST = "SELECT 1"
|
||||
|
||||
# 현재 시간 조회
|
||||
CURRENT_TIMESTAMP = "SELECT NOW()"
|
||||
@@ -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
|
||||
"""
|
||||
@@ -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);
|
||||
"""
|
||||
@@ -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
|
||||
"""
|
||||
Reference in New Issue
Block a user