package internal import ( "database/sql" "log" "time" "git.mmeiblog.cn/mei/nezha-recoder/pkg" _ "modernc.org/sqlite" ) func Recoder() { servers := pkg.GetData() for _, server := range servers.Servers { checkNameChange(server) db := HandleSqlConnection() defer db.Close() var diskUse float64 if server.Host.Disk_total != 0 { diskUse = float64(server.State.Disk_used) / float64(server.Host.Disk_total) * 100 } else { diskUse = 0 // 或者根据业务需求设置其他默认值 } sql := "INSERT INTO history (id, cpu, timestamp, disk_use, load_5, net_in_speed, net_out_speed, process_count) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" _, err := db.Exec(sql, server.Id, server.State.Cpu, time.Now().Unix(), diskUse, server.State.Load_5, server.State.Net_in_speed, server.State.Net_out_speed, server.State.Process_count) if err != nil { log.Println("insert error:", err) } log.Printf("写入数据成功: %s", server.Name) } } func checkNameChange(server pkg.Servers) { db := HandleSqlConnection() defer db.Close() Query := "SELECT name FROM agent WHERE id = ?" var name string err := db.QueryRow(Query, server.Id).Scan(&name) if err == sql.ErrNoRows { addServer(server) } else if err != nil { log.Println("query error:", err) } if name != server.Name { sql := "UPDATE agent SET name = ? WHERE id = ?" db.Exec(sql, server.Name, server.Id) } } func addServer(server pkg.Servers) { db := HandleSqlConnection() defer db.Close() sql := "INSERT INTO agent (id, name, disk_total, mem_total, arch, platform) VALUES (?, ?, ?, ?, ?, ?)" _, err := db.Exec(sql, server.Id, server.Name, server.Host.Disk_total, server.Host.Mem_total, server.Host.Arch, server.Host.Platform) if err != nil { log.Println("add Server error:", err) } }