251120 [ Day 92 ] - Project (12)

TaeHyun·2025년 11월 20일

TIL

목록 보기
108/182

시작하며

오늘도 새로운 API를 만들고 테스트 해본 뒤, 다른 팀원분이 만든 API와 일관성을 유지하기 위해 다르게 처리한 부분들을 통일시키는 작업을 하였다. 이후에는 DB와 API에서 불필요하거나 비효율적인 부분들을 수정한 뒤, 아두이노의 와이파이 모듈과 서버 연결 테스트를 조금 진행해보았다.

API

@data_bp.route("/api/data/history", methods=["GET"])
def get_trade_history():
    """
    구매채널 및 전력량, 구매 시간 등을 반환
    """
    # DB에서 데이터 조회
    conn, cursor = None, None
    try:
        # DB 연결
        conn, cursor = get_connection()
        if conn is None:
            return jsonify({"message": "DB 연결 실패"}), 503
        
        # 쿼리 파라미터 받아오기
        user_id = request.args.get("user_id")
        start_date = request.args.get("start_date")
        end_date = request.args.get("end_date")
        date = request.args.get("date")
        
        # 기본 SQL
        sql = "SELECT * FROM trade_history WHERE 1=1"
        params = []

        # 쿼리 파라미터 조건 추가
        if user_id:
            sql += " AND buyer_id = %s"
            params.append(user_id)
        if start_date:
            sql += " AND timestamp >= %s"
            params.append(start_date)
        if end_date:
            sql += " AND DATE(timestamp) <= %s"
            params.append(end_date)
        if date:
            sql += " AND DATE(timestamp) = %s"
            params.append(date)

        sql += " ORDER BY timestamp DESC"

        cursor.execute(sql, params)
        result = cursor.fetchall()

        return jsonify(result), 200

    except Exception as e:
        print(f"Error in check_available_channels: {e}")
        traceback.print_exc()
        return jsonify({"message": "서버 오류 발생"}), 500
    
    finally:
        close_connection(conn, cursor)

마치며

내일 와이파이 모듈과 서버 연동 테스트만 성공적으로 마치면 프로젝트의 큰 산 하나는 넘는 것 같다. 이후에는 프론트엔드에서 필요한 API 구현과 조금씩 다듬는 과정을 거친 뒤, 본격적인 테마에 맞게 회로를 꾸미는 작업을 진행할 것 같다.

profile
Hello I'm TaeHyunAn, Currently Studying Data Analysis

0개의 댓글