feat(logging): added in db and logging with websocket
This commit is contained in:
41
backend/utils/db/logs.go
Normal file
41
backend/utils/db/logs.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package db
|
||||
|
||||
import "time"
|
||||
|
||||
type Log struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
Level string `gorm:"size:10;not null"` // "info", "error", etc.
|
||||
Message string `gorm:"not null"`
|
||||
Service string `gorm:"size:50"` // Optional: service name
|
||||
Metadata JSONB `gorm:"type:jsonb"` // Structured fields (e.g., {"user_id": 123})
|
||||
CreatedAt time.Time `gorm:"index"` // Auto-set by GORM
|
||||
Checked bool `gorm:"type:boolean;default:false"`
|
||||
}
|
||||
|
||||
// JSONB is a helper type for PostgreSQL JSONB fields.
|
||||
type JSONB map[string]interface{}
|
||||
|
||||
// --- CRUD Operations ---
|
||||
|
||||
// CreateLog inserts a new log entry.
|
||||
func CreateLog(level, message, service string, metadata JSONB) error {
|
||||
log := Log{
|
||||
Level: level,
|
||||
Message: message,
|
||||
Service: service,
|
||||
Metadata: metadata,
|
||||
}
|
||||
return DB.Create(&log).Error
|
||||
}
|
||||
|
||||
// GetLogsByLevel fetches logs filtered by severity.
|
||||
func GetLogsByLevel(level string, limit int) ([]Log, error) {
|
||||
var logs []Log
|
||||
err := DB.Where("level = ?", level).Limit(limit).Find(&logs).Error
|
||||
return logs, err
|
||||
}
|
||||
|
||||
// DeleteOldLogs removes logs older than `days`.
|
||||
func DeleteOldLogs(days int) error {
|
||||
return DB.Where("created_at < ?", time.Now().AddDate(0, 0, -days)).Delete(&Log{}).Error
|
||||
}
|
||||
Reference in New Issue
Block a user