# import mysql.connector
# from mysql.connector import Error
# import json
#
#
# def create_connection():
#     with open('config.json') as config_file:
#         config = json.load(config_file)
#
#     connection = None
#     try:
#         connection = mysql.connector.connect(
#             host=config['host_name'],
#             port=config['mysql_port'],
#             user=config['user_name'],
#             password=config['user_password'],
#             database=config['db_name']
#         )
#         print("Connection to MySQL DB successful")
#     except Error as e:
#         print(f"The error '{e}' occurred")
#
#     return connection
#
#
# def execute_query(connection, query):
#     if connection is not None:
#         try:
#             cursor = connection.cursor(dictionary=True)
#             cursor.execute(query)
#             results = cursor.fetchall()
#             return results
#         except Error as e:
#             print(f"The error '{e}' occurred")
#         finally:
#             cursor.close()
#
#
# def save_results(results):
#     data_dict = {}
#     for row in results:
#         company_id = row['roommaster_company_id']
#         if company_id not in data_dict:
#             data_dict[company_id] = []
#         data_dict[company_id].append(row)
#     return data_dict
#
#
# def get_data_dict():
#     connection = create_connection()
#     query = """
#     SELECT
#         rd.udid AS roomdevice_udid,
#         rd.name AS roomdevice_name,
#         rm.id AS roommaster_id,
#         rm.name AS roommaster_name,
#         rm.udid AS roommaster_udid,
#         rm.company_id AS roommaster_company_id
#     FROM
#         cmdb_roomdevice rd
#     JOIN
#         cmdb_roommaster rm
#     ON
#         rd.master_id = rm.id;
#     """
#     results = execute_query(connection, query)
#     data_dict = save_results(results)
#     if connection.is_connected():
#         connection.close()
#     return data_dict
#
#
# def main():
#     data_dict = get_data_dict()
#     print(data_dict)
#
#     # 打印数据字典的键,确保数据保存正确
#     print("Data dictionary keys:", list(data_dict.keys()))
#
#     # 打印每个公司ID对应的数据,确保数据保存正确
#     for company_id, rows in data_dict.items():
#         print(f"Company ID {company_id} has {len(rows)} records:")
#         for row in rows:
#             print(row)
#
#
# if __name__ == "__main__":
#     main()


import mysql.connector
from mysql.connector import Error
import json
from flask import Flask, request, jsonify
import logging

app = Flask(__name__)
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')


def create_connection():
    with open('config.json') as config_file:
        config = json.load(config_file)

    connection = None
    try:
        connection = mysql.connector.connect(
            host=config['host_name'],
            port=config['mysql_port'],
            user=config['user_name'],
            password=config['user_password'],
            database=config['db_name']
        )
        print("Connection to MySQL DB successful")
    except Error as e:
        print(f"The error '{e}' occurred")

    return connection


def execute_query(connection, query):
    if connection is not None:
        try:
            cursor = connection.cursor(dictionary=True)
            cursor.execute(query)
            results = cursor.fetchall()
            return results
        except Error as e:
            print(f"The error '{e}' occurred")
        finally:
            cursor.close()


def save_results(results):
    data_dict = {}
    for row in results:
        company_id = row['roommaster_company_id']
        if company_id not in data_dict:
            data_dict[company_id] = []
        data_dict[company_id].append(row)
    return data_dict


def get_data_dict():
    connection = create_connection()
    query = """
    SELECT 
        rd.udid AS roomdevice_udid,
        rd.name AS roomdevice_name,
        rm.id AS roommaster_id,
        rm.name AS roommaster_name,
        rm.udid AS roommaster_udid,
        rm.company_id AS roommaster_company_id
    FROM 
        cmdb_roomdevice rd
    JOIN 
        cmdb_roommaster rm
    ON 
        rd.master_id = rm.id;
    """
    results = execute_query(connection, query)
    data_dict = save_results(results)
    if connection.is_connected():
        connection.close()
    return data_dict


def main():
    global data_dict
    data_dict = get_data_dict()
    print(data_dict)

    # 打印数据字典的键,确保数据保存正确
    print("Data dictionary keys:", list(data_dict.keys()))

    # 打印每个公司ID对应的数据,确保数据保存正确
    for company_id, rows in data_dict.items():
        print(f"Company ID {company_id} has {len(rows)} records:")
        for row in rows:
            print(row)


@app.route('/get_regions', methods=['GET'])
def get_regions():
    try:
        company_id = int(request.args.get('company_id'))
        logging.debug(f"收到公司ID: {company_id}")

        regions = []
        for row in data_dict.get(company_id, []):
            region_info = {
                'roommaster_id': row['roommaster_id'],
                'roommaster_name': row['roommaster_name'],
                'roommaster_udid': row['roommaster_udid']
            }
            regions.append(region_info)

        if not regions:
            logging.warning(f"未找到公司ID {company_id} 对应的区域信息")
            return jsonify({"error": f"未找到公司ID {company_id} 对应的区域信息"}), 404

        return jsonify(regions)

    except (ValueError, TypeError) as e:
        logging.error(f"无效的公司ID: {request.args.get('company_id')}")
        return jsonify({"error": "无效的公司ID"}), 400


if __name__ == '__main__':
    main()
    app.run(debug=True)