All checks were successful
continuous-integration/drone/push Build is passing
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package models
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
// Define audit functions
|
|
type Audit struct {
|
|
AuditId int `db:"AuditId" json:"auditId"`
|
|
UserId int `db:"UserId" json:"userId"`
|
|
SecretId int `db:"SecretId" json:"secretId"`
|
|
EventText string `db:"EventText" json:"eventText"`
|
|
EventTime time.Time `db:"EventTime" json:"eventTime"`
|
|
IpAddress string `db:"IpAddress" json:"ipAddress"`
|
|
}
|
|
|
|
// AuditLogAdd adds a new audit record to the database
|
|
func (a *Audit) AuditLogAdd() (*Audit, error) {
|
|
var err error
|
|
|
|
// Populate timestamp field if not already set
|
|
if a.EventTime.IsZero() {
|
|
a.EventTime = time.Now().UTC()
|
|
}
|
|
|
|
result, err := db.NamedExec(("INSERT INTO audit (UserId, SecretId, EventText, EventTime, IpAddress) VALUES (:UserId, :SecretId, :EventText, :EventTime, :IpAddress);"), a)
|
|
|
|
if err != nil {
|
|
log.Printf("AuditLogAdd error executing sql record : '%s'\n", err)
|
|
return &Audit{}, err
|
|
} else {
|
|
affected, _ := result.RowsAffected()
|
|
id, _ := result.LastInsertId()
|
|
a.AuditId = int(id)
|
|
log.Printf("AuditLogAdd insert returned result id '%d' affecting %d row(s).\n", id, affected)
|
|
}
|
|
|
|
return a, nil
|
|
}
|
|
|
|
// AuditList returns a list of all audit logs in database
|
|
func AuditLogList() ([]Audit, error) {
|
|
var results []Audit
|
|
|
|
// Query database for groups
|
|
rows, err := db.Queryx("SELECT * FROM audit")
|
|
|
|
if err != nil {
|
|
log.Printf("AuditLogList error executing sql record : '%s'\n", err)
|
|
return results, err
|
|
} else {
|
|
// parse all the results into a slice
|
|
for rows.Next() {
|
|
var a Audit
|
|
err = rows.StructScan(&a)
|
|
if err != nil {
|
|
log.Printf("AuditLogList error parsing sql record : '%s'\n", err)
|
|
return results, err
|
|
}
|
|
results = append(results, a)
|
|
|
|
}
|
|
log.Printf("AuditLogList retrieved '%d' results\n", len(results))
|
|
}
|
|
|
|
return results, nil
|
|
}
|