mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
chore: fully implement enterprise audit pkg (#3821)
This commit is contained in:
40
enterprise/audit/backends/postgres.go
Normal file
40
enterprise/audit/backends/postgres.go
Normal file
@ -0,0 +1,40 @@
|
||||
package backends
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/coderd/database"
|
||||
"github.com/coder/coder/enterprise/audit"
|
||||
)
|
||||
|
||||
type postgresBackend struct {
|
||||
// internal indicates if the exporter is exporting to the Postgres database
|
||||
// that the rest of Coderd uses. Since this is a generic Postgres exporter,
|
||||
// we make different decisions to store the audit log based on if it's
|
||||
// pointing to the Coderd database.
|
||||
internal bool
|
||||
db database.Store
|
||||
}
|
||||
|
||||
func NewPostgres(db database.Store, internal bool) audit.Backend {
|
||||
return &postgresBackend{db: db, internal: internal}
|
||||
}
|
||||
|
||||
func (b *postgresBackend) Decision() audit.FilterDecision {
|
||||
if b.internal {
|
||||
return audit.FilterDecisionStore
|
||||
}
|
||||
|
||||
return audit.FilterDecisionExport
|
||||
}
|
||||
|
||||
func (b *postgresBackend) Export(ctx context.Context, alog database.AuditLog) error {
|
||||
_, err := b.db.InsertAuditLog(ctx, database.InsertAuditLogParams(alog))
|
||||
if err != nil {
|
||||
return xerrors.Errorf("insert audit log: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user