mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
* added audit manager * Basic database DOA setup * Added base config file * added sqlite support and creation of schema * added basic tests and config entry * corrected issues of database is disabled * fixed path for test * WIP * Added tests fixed config checking * reverted files back to upstream * reverted go.mod files * no more test test test * removed local testing details for psql * hello * added comments * increased ping to 30 seconds * renamed database table and added additional condition around test * removed database test details * goimport ran on all files * WIP * first attempt at migration * fixes for migration system * Migration system logger interface implemented * fixes to print functions * added write pooling pass * gofmt :D * formatted imports correctly * removed old code * added creation of migration * gofmt * :D Hello * ❌ 🏎️ * maybe one day i will remember to revert go mod files * checked err return condition correctly * first changes for PR feedback * code clean up * protect Connected with RWmutex & event with mutex * : D * we can just pretend like it never happened * MOved migrations back to source directory and added README * readme formatting update * Addd command line override for datadir * use correct var when creating a migration and confirm folder is created * Check if database version is newer than latest migration and also you know make migrations work..... * uses filepath instead of manual path to use correct path seperator * Add connection message and lower timeout * Added support for sslmode for psql * no longer force Close of database instead allow driver to maage * Added closer func to test output * sslmode added to example config
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package audit
|
|
|
|
import (
|
|
"github.com/thrasher-corp/gocryptotrader/database"
|
|
"github.com/thrasher-corp/gocryptotrader/database/models"
|
|
"github.com/thrasher-corp/gocryptotrader/database/repository/audit"
|
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
|
)
|
|
|
|
type auditRepo struct{}
|
|
|
|
// Audit returns a new instance of auditRepo
|
|
func Audit() audit.Repository {
|
|
return &auditRepo{}
|
|
}
|
|
|
|
// AddEventTx writes multiple event to database
|
|
// writes are done using a transaction with a rollback on error
|
|
func (pg *auditRepo) AddEventTx(event []*models.AuditEvent) {
|
|
if pg == nil {
|
|
return
|
|
}
|
|
|
|
tx, err := database.Conn.SQL.Begin()
|
|
if err != nil {
|
|
log.Errorf(log.Global, "Failed to create transaction: %v\n", err)
|
|
return
|
|
}
|
|
|
|
query := `INSERT INTO audit_event (type, identifier, message) VALUES($1, $2, $3)`
|
|
|
|
for x := range event {
|
|
_, err = tx.Exec(query, &event[x].Type, &event[x].Identifier, &event[x].Message)
|
|
|
|
if err != nil {
|
|
err = tx.Rollback()
|
|
if err != nil {
|
|
log.Errorf(log.Global, "Tx Rollback has failed: %v", err)
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
err = tx.Commit()
|
|
if err != nil {
|
|
err = tx.Rollback()
|
|
if err != nil {
|
|
log.Errorf(log.Global, "Tx Rollback has failed: %v", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
}
|