Files
aiops/backend/pkg/database/dialect.go
T
Logan.Li b7166acda4 优化 local 模式兼容性与部署可靠性
- SQL 方言层:agent updated_at、dashboard 小时分桶、清理任务跨 SQLite/MySQL
- Cache Capabilities:redka 跳过 ZSet/PubSub,Agent 聚合改 DB 直读
- local 模式 redka 初始化失败 Fatal;/version 返回 features
- SQLite WAL + 连接池限制;K8s data 改 PVC 持久化
- run.sh:旧参数迁移、升级后 /version 校验
2026-06-26 13:28:31 +08:00

43 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package database
import (
"strings"
"gorm.io/gorm"
)
// DriverName 从 GORM 连接获取驱动名(sqlite / mysql / postgres)// Logan.Li
func DriverName(db *gorm.DB) string {
if db == nil || db.Dialector == nil {
return "mysql"
}
name := strings.ToLower(db.Dialector.Name())
switch {
case strings.Contains(name, "sqlite"):
return "sqlite"
case strings.Contains(name, "postgres"):
return "postgres"
default:
return "mysql"
}
}
// HourBucketExpr 按小时分桶表达式(跨 SQLite / MySQL)// Logan.Li
func HourBucketExpr(driver string) string {
switch driver {
case "sqlite":
return "cast(strftime('%s', report_time) as integer) / 3600"
default:
return "UNIX_TIMESTAMP(report_time) DIV 3600"
}
}
// CleanupAgentReportsSQL 清理 7 天前 Agent 上报 // Logan.Li
func CleanupAgentReportsSQL(driver string) string {
switch driver {
case "sqlite":
return "DELETE FROM monitor_agent_reports WHERE report_time < datetime('now', '-7 days')"
default:
return "DELETE FROM monitor_agent_reports WHERE report_time < DATE_SUB(NOW(), INTERVAL 7 DAY)"
}
}