feat(ws server): added in a websocket on port system to help with better logging

This commit is contained in:
2025-07-25 12:13:19 -05:00
parent 074032f20d
commit 5bcbdaf3d0
17 changed files with 679 additions and 19 deletions

View File

@@ -1,19 +1,26 @@
package db
import "time"
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
type Log struct {
ID uint `gorm:"primaryKey"`
LogID uuid.UUID `gorm:"type:uuid;default:uuid_generate_v4();primaryKey" json:"id"`
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
Service string `gorm:"size:50"`
Metadata JSONB `gorm:"type:jsonb"` // fields (e.g., {"user_id": 123})
CreatedAt time.Time `gorm:"index"`
Checked bool `gorm:"type:boolean;default:false"`
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}
// JSONB is a helper type for PostgreSQL JSONB fields.
type JSONB map[string]interface{}
//type JSONB map[string]interface{}
// --- CRUD Operations ---
@@ -29,13 +36,13 @@ func CreateLog(level, message, service string, metadata JSONB) error {
}
// GetLogsByLevel fetches logs filtered by severity.
func GetLogsByLevel(level string, limit int) ([]Log, error) {
func GetLogs(level string, limit int, service string) ([]Log, error) {
var logs []Log
err := DB.Where("level = ?", level).Limit(limit).Find(&logs).Error
err := DB.Where("level = ? and service = ?", level, service).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
// DeleteOldLogs removes logs older than `days` and by level.
func DeleteOldLogs(days int, level string) error {
return DB.Where("created_at < ? and level = ?", time.Now().AddDate(0, 0, -days), level).Delete(&Log{}).Error
}