#!/bin/bash

# ==========================================
# Health Data CLI Wrapper
# ==========================================

# 定义颜色
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

function show_help {
    echo -e "${BLUE}Health Data Management CLI${NC}"
    echo "------------------------------------------------------------"
    echo -e "Usage: $0 ${GREEN}<command>${NC} [args...]"
    echo ""
    echo -e "${YELLOW}Commands:${NC}"
    echo -e "  ${GREEN}sync${NC}                           执行日常同步"
    echo -e "  ${GREEN}sync-week${NC}                      同步过去 7 天"
    echo -e "  ${GREEN}sync-month${NC}                     同步过去 30 天"
    echo -e "  ${GREEN}update${NC}                         执行增量更新 (incremental)"
    echo -e "  ${GREEN}show [date]${NC}                    显示日报 (默认今日, date格式 YYYY-MM-DD)"
    echo -e "  ${GREEN}stats <type> <start> <end>${NC}     查询指定类型的统计数据"
    echo -e "  ${GREEN}activities <start> <end>${NC}       查询活动记录 (Activities)"
    echo ""
    echo -e "${YELLOW}Available Stats Types:${NC}"
    echo "  steps, heart_rate, sleep, stress, body_battery, spo2,"
    echo "  respiration, hydration, floors, intensity_minutes, hrv,"
    echo "  rhr, weight"
    echo "------------------------------------------------------------"
}

# 检查参数
if [ $# -eq 0 ]; then
    show_help
    exit 0
fi

CMD=$1

case "$CMD" in
    sync)
        echo -e "${BLUE}> Syncing daily data...${NC}"
        source venv/bin/activate && python scripts/daily_sync.py
        ;;

    sync-week)
        echo -e "${BLUE}> Syncing last 7 days...${NC}"
        source venv/bin/activate && python scripts/daily_sync.py --days 7
        ;;

    sync-month)
        echo -e "${BLUE}> Syncing last 30 days...${NC}"
        source venv/bin/activate && python scripts/daily_sync.py --days 30
        ;;

    update)
        echo -e "${BLUE}> Performing incremental update...${NC}"
        source venv/bin/activate && python -m health.cli.sync sync-incremental
        ;;

    show)
        DATE=$2
        if [ -z "$DATE" ]; then
            echo -e "${BLUE}> Showing daily summary...${NC}"
            source venv/bin/activate && python -m health.cli.query daily
        else
            echo -e "${BLUE}> Showing summary for $DATE...${NC}"
            source venv/bin/activate && python -m health.cli.query daily "$DATE"
        fi
        ;;

    stats)
        TYPE=$2
        START=$3
        END=$4

        # 校验参数个数
        if [[ -z "$TYPE" || -z "$START" || -z "$END" ]]; then
            echo -e "${RED}Error: Missing arguments for stats.${NC}"
            echo "Usage: $0 stats {type} {start_date} {end_date}"
            exit 1
        fi

        # 校验 Type 是否在允许列表中
        VALID_TYPES="steps|heart_rate|sleep|stress|body_battery|spo2|respiration|hydration|floors|intensity_minutes|hrv|rhr|weight"
        
        if [[ ! "$TYPE" =~ ^($VALID_TYPES)$ ]]; then
             echo -e "${RED}Error: Invalid type '$TYPE'.${NC}"
             echo "Allowed types: ${VALID_TYPES//|/, }"
             exit 1
        fi

        echo -e "${BLUE}> Querying $TYPE ($START to $END)...${NC}"
        source venv/bin/activate && python -m health.cli.query range "$TYPE" "$START" "$END"
        ;;

    activities)
        START=$2
        END=$3

        if [[ -z "$START" || -z "$END" ]]; then
            echo -e "${RED}Error: Missing arguments for activities.${NC}"
            echo "Usage: $0 activities {start_date} {end_date}"
            exit 1
        fi

        echo -e "${BLUE}> Querying activities ($START to $END)...${NC}"
        source venv/bin/activate && python -m health.cli.query activities "$START" "$END"
        ;;

    help|--help|-h)
        show_help
        ;;

    *)
        echo -e "${RED}Unknown command: $CMD${NC}"
        show_help
        exit 1
        ;;
esac
