package database import ( "database/sql" "github.com/owen/vibeproxy/internal/models" ) func InsertAuditLog(db *sql.DB, actor, action, target, details string) error { _, err := db.Exec(`INSERT INTO audit_logs (actor, action, target, details) VALUES (?, ?, ?, ?)`, actor, action, target, details) return err } func ListAuditLogs(db *sql.DB, limit, offset int) ([]models.AuditLog, int, error) { var total int if err := db.QueryRow(`SELECT COUNT(*) FROM audit_logs`).Scan(&total); err != nil { return nil, 0, err } if limit <= 0 || limit > 500 { limit = 50 } rows, err := db.Query(`SELECT id, timestamp, actor, action, target, details FROM audit_logs ORDER BY id DESC LIMIT ? OFFSET ?`, limit, offset) if err != nil { return nil, 0, err } defer rows.Close() var out []models.AuditLog for rows.Next() { var a models.AuditLog var ts string if err := rows.Scan(&a.ID, &ts, &a.Actor, &a.Action, &a.Target, &a.Details); err != nil { return nil, 0, err } a.Timestamp = parseTime(ts) out = append(out, a) } return out, total, rows.Err() }