import json
import os

#v1
HOUSE_FILE = "./data/houses.json"

def init_db():
    """初始化房源数据文件"""
    os.makedirs("./data", exist_ok=True)
    if not os.path.exists(HOUSE_FILE):
        with open(HOUSE_FILE, 'w', encoding='utf-8') as f:
            json.dump([], f, ensure_ascii=False, indent=4)

def read_houses():
    """读取所有房源"""
    init_db()
    with open(HOUSE_FILE, 'r', encoding='utf-8') as f:
        return json.load(f)

def write_houses(houses):
    """写入房源"""
    with open(HOUSE_FILE, 'w', encoding='utf-8') as f:
        json.dump(houses, f, ensure_ascii=False, indent=4)

#v2
STACK_FILE = "./data/stack_data.json"

def init_stack_db():
    """初始化栈文件"""
    os.makedirs("./data", exist_ok=True)
    if not os.path.exists(STACK_FILE):
        init_data = {"operation_stack": [], "browse_stack": []}
        with open(STACK_FILE, 'w', encoding='utf-8') as f:
            json.dump(init_data, f, ensure_ascii=False, indent=4)

def read_stack(stack_type):
    """读取指定栈"""
    init_stack_db()
    with open(STACK_FILE, 'r', encoding='utf-8') as f:
        data = json.load(f)
    return data.get(f"{stack_type}_stack", [])

def write_stack(stack_type, new_stack):
    """写入指定栈"""
    init_stack_db()
    with open(STACK_FILE, 'r', encoding='utf-8') as f:
        data = json.load(f)
    data[f"{stack_type}_stack"] = new_stack
    with open(STACK_FILE, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

# v3
MATRIX_FILE = "./data/matrix.json"

def init_matrix_db():
    """初始化小区邻接矩阵文件"""
    os.makedirs("./data", exist_ok=True)
    if not os.path.exists(MATRIX_FILE):
        init_data = {
            "community_list": [],    # 小区名称列表（一维数组）
            "distance_matrix": []    # 小区距离二维数组（邻接矩阵）
        }
        with open(MATRIX_FILE, 'w', encoding='utf-8') as f:
            json.dump(init_data, f, ensure_ascii=False, indent=4)

def read_matrix_data():
    """读取小区列表和距离邻接矩阵"""
    init_matrix_db()
    with open(MATRIX_FILE, 'r', encoding='utf-8') as f:
        return json.load(f)

def write_matrix_data(matrix_dict):
    """保存小区列表和距离邻接矩阵"""
    init_matrix_db()
    with open(MATRIX_FILE, 'w', encoding='utf-8') as f:
        json.dump(matrix_dict, f, ensure_ascii=False, indent=4)

