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"` Timestamp time.Time `db:"Timestamp" json:"Timestamp"` } // AuditAdd adds a new audit record to the database func (a *Audit) AuditAdd() (*Audit, error) { var err error // Populate timestamp field if not already set if a.Timestamp.IsZero() { a.Timestamp = time.Now() } result, err := db.NamedExec(("INSERT INTO audit (UserId, SecretId, EventText, Timestamp) VALUES (:UserId, :SecretId, :EventText, :Timestamp);"), a) if err != nil { log.Printf("AuditAdd error executing sql record : '%s'\n", err) return &Audit{}, err } else { affected, _ := result.RowsAffected() id, _ := result.LastInsertId() a.AuditId = int(id) log.Printf("AuditAdd insert returned result id '%d' affecting %d row(s).\n", id, affected) } return a, nil }