from fastapi import FastAPI, Request
import mysql.connector
import asyncio

app = FastAPI()

# MySQL config
db_config = {
    "host": "localhost",
    "user": "root",
    "password": "31031992",
    "database": "lobster_bet"
}

# 本地缓存
config = {}

# 初始化时加载
def load_config_from_db():
    global config
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()
    cursor.execute("SELECT `key`, `value` FROM bot_config")
    rows = cursor.fetchall()
    conn.close()
    # 转 dict，数值型转回 float/int
    for k, v in rows:
        try:
            if '.' in v:
                v = float(v)
            else:
                v = int(v)
        except ValueError:
            pass
        config[k] = v
    print("Config loaded:", config)


@app.on_event("startup")
async def on_startup():
    load_config_from_db()
    asyncio.create_task(periodic_reload())  # 定时刷新

async def periodic_reload():
    while True:
        await asyncio.sleep(30)  # 每30秒刷新
        load_config_from_db()


@app.get("/get_config")
async def get_config():
    return config

@app.post("/set_config")
async def set_config(request: Request):
    data = await request.json()
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()
    for key, value in data.items():
        cursor.execute("REPLACE INTO bot_config (`key`, `value`) VALUES (%s, %s)", (key, str(value)))
    conn.commit()
    conn.close()
    load_config_from_db()  # 立即刷新
    return {"status": "success", "config": config}


# 这里省略 Telegram bot 部分
# 在 handle_message、start_listening 等地方：
# 直接用 config["minBanker"], config["TOKEN"] 等

