feat: 添加 cloudflare_pages、mysql_d1_backup_scheduler,更新 start_system、ensemble_models 及配置文件
This commit is contained in:
1 parent
6184c34a3a
commit
62110554d1
20 files changed
+1438
-19
No files matched your search
@@ -0,0 +1,71 @@
|
||||
function json(data, status = 200) {
|
||||
return new Response(JSON.stringify(data), {
|
||||
status,
|
||||
headers: { "content-type": "application/json; charset=UTF-8" },
|
||||
});
|
||||
}
|
||||
|
||||
function toInt(v, d) {
|
||||
const n = Number(v);
|
||||
return Number.isFinite(n) && n > 0 ? Math.floor(n) : d;
|
||||
}
|
||||
|
||||
export async function onRequestGet(context) {
|
||||
const db = context.env.DB;
|
||||
if (!db) {
|
||||
return json({ success: false, error: "缺少 D1 绑定 DB" }, 500);
|
||||
}
|
||||
|
||||
try {
|
||||
const url = new URL(context.request.url);
|
||||
const page = toInt(url.searchParams.get("page"), 1);
|
||||
const limit = Math.min(100, toInt(url.searchParams.get("limit"), 10));
|
||||
const month = (url.searchParams.get("month") || "").trim();
|
||||
const day = (url.searchParams.get("day") || "").trim();
|
||||
const offset = (page - 1) * limit;
|
||||
|
||||
const where = ["1=1"];
|
||||
const params = [];
|
||||
|
||||
// 时间字段是 YYYY-MM-DD HH:MM:SS 文本,直接前缀过滤可走索引/减少转换成本
|
||||
if (month) {
|
||||
where.push("timestamp LIKE ?");
|
||||
params.push(`${month}%`);
|
||||
}
|
||||
if (day) {
|
||||
where.push("timestamp LIKE ?");
|
||||
params.push(`${day}%`);
|
||||
}
|
||||
|
||||
const whereSql = where.join(" AND ");
|
||||
const dataSql = `
|
||||
SELECT *
|
||||
FROM backup_trades
|
||||
WHERE ${whereSql}
|
||||
ORDER BY timestamp DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`;
|
||||
const countSql = `
|
||||
SELECT COUNT(*) AS cnt
|
||||
FROM backup_trades
|
||||
WHERE ${whereSql}
|
||||
`;
|
||||
|
||||
const dataResult = await db.prepare(dataSql).bind(...params, limit, offset).all();
|
||||
const countResult = await db.prepare(countSql).bind(...params).first();
|
||||
|
||||
const total = Number(countResult?.cnt || 0);
|
||||
const totalPages = total > 0 ? Math.ceil(total / limit) : 1;
|
||||
|
||||
return json({
|
||||
success: true,
|
||||
data: dataResult.results || [],
|
||||
page,
|
||||
limit,
|
||||
total,
|
||||
total_pages: totalPages,
|
||||
});
|
||||
} catch (error) {
|
||||
return json({ success: false, error: String(error) }, 500);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user