Initial add backend stuff

This commit is contained in:
2026-07-08 15:45:16 -04:00
commit a7964f9410
89 changed files with 25924 additions and 0 deletions

41
l4g/database.go Normal file
View File

@@ -0,0 +1,41 @@
package l4g
import (
"os"
)
// dbWriter is the app-supplied sink that persists a log Entry to the database.
// The framework cannot import the app's repository, so the app registers a
// writer at startup via SetDatabaseWriter. If none is registered, the database
// logger falls back to the terminal so log lines are never silently dropped.
var dbWriter func(Entry) error
// SetDatabaseWriter registers the function the database logger uses to persist
// entries. Apps typically wire it to their repository:
//
// l4g.SetDatabaseWriter(func(e l4g.Entry) error {
// return repository.InsertLogEntry(context.Background(), models.LogEntry(e))
// })
func SetDatabaseWriter(w func(Entry) error) { dbWriter = w }
type DatabaseLogger struct{}
func NewDatabaseLogger() *DatabaseLogger {
return &DatabaseLogger{}
}
func (d *DatabaseLogger) Write(entry Entry) error {
if dbWriter == nil {
return NewTerminalLogger().Write(entry)
}
return dbWriter(entry)
}
func (d *DatabaseLogger) Fatal(entry Entry) error {
err := d.Write(entry)
if err != nil {
return err
}
os.Exit(1)
return nil
}