mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-10-22 07:51:30 +00:00
* Renamed aggregator -> apiServer. * Format errors with container names. * Renamed collector -> apiServer. * Rephrased help messages. * Moved api -> agent. * Continue renameing api -> agent in Makefile and Dockerfiles.
74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
"mizuserver/pkg/models"
|
|
"mizuserver/pkg/utils"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
DBPath = "./entries.db"
|
|
OrderDesc = "desc"
|
|
OrderAsc = "asc"
|
|
LT = "lt"
|
|
GT = "gt"
|
|
)
|
|
|
|
var (
|
|
DB *gorm.DB
|
|
IsDBLocked = false
|
|
OperatorToSymbolMapping = map[string]string{
|
|
LT: "<",
|
|
GT: ">",
|
|
}
|
|
OperatorToOrderMapping = map[string]string{
|
|
LT: OrderDesc,
|
|
GT: OrderAsc,
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
DB = initDataBase(DBPath)
|
|
go StartEnforcingDatabaseSize()
|
|
}
|
|
|
|
func GetEntriesTable() *gorm.DB {
|
|
return DB.Table("mizu_entries")
|
|
}
|
|
|
|
func CreateEntry(entry *models.MizuEntry) {
|
|
if IsDBLocked {
|
|
return
|
|
}
|
|
GetEntriesTable().Create(entry)
|
|
}
|
|
|
|
func initDataBase(databasePath string) *gorm.DB {
|
|
temp, _ := gorm.Open(sqlite.Open(databasePath), &gorm.Config{
|
|
Logger: &utils.TruncatingLogger{LogLevel: logger.Warn, SlowThreshold: 500 * time.Millisecond},
|
|
})
|
|
_ = temp.AutoMigrate(&models.MizuEntry{}) // this will ensure table is created
|
|
return temp
|
|
}
|
|
|
|
|
|
func GetEntriesFromDb(timestampFrom int64, timestampTo int64) []models.MizuEntry {
|
|
order := OrderDesc
|
|
var entries []models.MizuEntry
|
|
GetEntriesTable().
|
|
Where(fmt.Sprintf("timestamp BETWEEN %v AND %v", timestampFrom, timestampTo)).
|
|
Order(fmt.Sprintf("timestamp %s", order)).
|
|
Find(&entries)
|
|
|
|
if len(entries) > 0 {
|
|
// the entries always order from oldest to newest so we should revers
|
|
utils.ReverseSlice(entries)
|
|
}
|
|
return entries
|
|
}
|
|
|