ref: 5c9a5a1c5e7481ebba418da8a8f17fa14ed85d30
server/db/queries.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
/** * Yats - yats * * This file is licensed under the Affero General Public License version 3 or * later. See the COPYING file. * * @author Paolo Lulli <kevwe.com> * @copyright Paolo Lulli 2024 */ package db import ( "fmt" "github.com/gocql/gocql" "time" "yats-server/model" ) func MetricsFrom(session *gocql.Session, idClient string, metricName string, fromTime string, limit int32) []model.MetricModel { var metrics []model.MetricModel m := map[string]interface{}{} q := fmt.Sprintf("SELECT id_client, mtime, name, value FROM metric where id_client='%s' and name ='%s' and mtime > '%s' order by mtime limit %d", idClient, metricName, fromTime, limit) fmt.Println(q) iter := session.Query(q).Iter() for iter.MapScan(m) { metrics = append(metrics, model.MetricModel{ IdClient: m["id_client"].(string), Mtime: m["mtime"].(time.Time).UnixMilli(), Name: m["name"].(string), Value: m["value"].(string), }) m = map[string]interface{}{} } return metrics } func MetricsBetween(session *gocql.Session, idClient string, metricName string, fromTime string, toTime string, limit int32) []model.MetricModel { var metrics []model.MetricModel m := map[string]interface{}{} q := fmt.Sprintf("SELECT id_client, mtime, name, value FROM metric where id_client='%s' and name ='%s' and mtime > '%s' and mtime <= '%s' order by mtime limit %d", idClient, metricName, fromTime, toTime, limit) fmt.Println(q) iter := session.Query(q).Iter() for iter.MapScan(m) { metrics = append(metrics, model.MetricModel{ IdClient: m["id_client"].(string), Mtime: m["mtime"].(time.Time).UnixMilli(), Name: m["name"].(string), Value: m["value"].(string), }) m = map[string]interface{}{} } return metrics } func EventsFrom(session *gocql.Session, idClient string, fromTime string, limit int32) []model.EventModel { var events []model.EventModel m := map[string]interface{}{} q := fmt.Sprintf("SELECT id_client, etime, name FROM event where id_client='%s' and etime > '%s' order by etime limit %d", idClient, fromTime, limit) fmt.Println(q) iter := session.Query(q).Iter() for iter.MapScan(m) { events = append(events, model.EventModel{ IdClient: m["id_client"].(string), Etime: m["etime"].(time.Time).UnixMilli(), Name: m["name"].(string), }) m = map[string]interface{}{} } return events } func EventsBetween(session *gocql.Session, idClient string, fromTime string, totime string, limit int32) []model.EventModel { var events []model.EventModel m := map[string]interface{}{} q := fmt.Sprintf("SELECT id_client, etime, name FROM event where id_client='%s' and etime > '%s' and etime <= '%s' order by etime limit %d", idClient, fromTime, totime, limit) fmt.Println(q) iter := session.Query(q).Iter() for iter.MapScan(m) { events = append(events, model.EventModel{ IdClient: m["id_client"].(string), Etime: m["etime"].(time.Time).UnixMilli(), Name: m["name"].(string), }) m = map[string]interface{}{} } return events } |