Add event_deletion_enabled option to the config, useful for master-master/cluster setups

This commit is contained in:
Roman Vynar
2019-07-30 09:02:25 +03:00
parent fe0f3e28e8
commit d5b6669eee
3 changed files with 16 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/hhkbp2/go-logging"
"github.com/quiq/docker-registry-ui/registry"
// 🐒 patching of "database/sql".
_ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3"
@@ -35,6 +36,7 @@ type EventListener struct {
databaseDriver string
databaseLocation string
retention int
eventDeletion bool
logger logging.Logger
}
@@ -54,11 +56,12 @@ type EventRow struct {
}
// NewEventListener initialize EventListener.
func NewEventListener(databaseDriver, databaseLocation string, retention int) *EventListener {
func NewEventListener(databaseDriver, databaseLocation string, retention int, eventDeletion bool) *EventListener {
return &EventListener{
databaseDriver: databaseDriver,
databaseLocation: databaseLocation,
retention: retention,
eventDeletion: eventDeletion,
logger: registry.SetupLogging("events.event_listener"),
}
}
@@ -112,6 +115,9 @@ func (e *EventListener) ProcessEvents(request *http.Request) {
}
// Purge old records.
if !e.eventDeletion {
return
}
var res sql.Result
if e.databaseDriver == "mysql" {
stmt, _ := db.Prepare("DELETE FROM events WHERE created < DATE_SUB(NOW(), INTERVAL ? DAY)")