Files
photocli/internal/manifest/sqlite_log.go
T
Ein Anderssono 2e73d01b40
pipeline / build (push) Has been cancelled
pipeline / test (push) Has been cancelled
v0.5.0: manifests, filters, logging, docs
2026-06-15 00:00:06 +02:00

42 lines
1.0 KiB
Go

package manifest
import (
"database/sql"
)
type sqliteLogWriter struct {
db *sql.DB
}
func NewSQLiteLogWriter(db *sql.DB) (LogWriter, error) {
_, err := db.Exec(`CREATE TABLE IF NOT EXISTS logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts INTEGER NOT NULL,
level TEXT NOT NULL,
event TEXT NOT NULL,
asset_id TEXT,
album TEXT,
filename TEXT,
size INTEGER,
cloud TEXT,
duration_ms INTEGER,
message TEXT
)`)
if err != nil {
return nil, err
}
_, _ = db.Exec(`CREATE INDEX IF NOT EXISTS idx_logs_ts ON logs(ts)`)
_, _ = db.Exec(`CREATE INDEX IF NOT EXISTS idx_logs_event ON logs(event)`)
return &sqliteLogWriter{db: db}, nil
}
func (w *sqliteLogWriter) Log(e LogEntry) {
if w.db == nil {
return
}
w.db.Exec(`INSERT INTO logs (ts, level, event, asset_id, album, filename, size, cloud, duration_ms, message) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
e.Timestamp, e.Level, e.Event, e.AssetID, e.Album, e.Filename, e.Size, e.Cloud, e.DurationMs, e.Message)
}
func (w *sqliteLogWriter) Close() { _ = w }