38 lines
849 B
Go
38 lines
849 B
Go
package api
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"time"
|
|
|
|
"git.example.com/example/goserv/internal/db"
|
|
)
|
|
|
|
func newID() string {
|
|
// Postgres returns IDs on inserts but,
|
|
// for portability and ease of association,
|
|
// we'll create our own.
|
|
b := make([]byte, 16)
|
|
_, _ = RandReader.Read(b)
|
|
id := base64.RawURLEncoding.EncodeToString(b)
|
|
return id
|
|
}
|
|
|
|
// NotDeleted supplements a WHERE clause
|
|
const NotDeleted = `
|
|
( "deleted_at" IS NULL OR "deleted_at" = '0001-01-01 00:00:00+00' OR "deleted_at" = '1970-01-01 00:00:00+00' )
|
|
`
|
|
|
|
func logEvent(action, table, recordID, by string, at time.Time) (string, error) {
|
|
id := newID()
|
|
|
|
if _, err := db.DB.Exec(`
|
|
INSERT INTO "events" ("id", "action", "table", "record", "by", "at")
|
|
VALUES ($1, $2, $3, $4, $5, $6)`,
|
|
id, action, table, recordID, by, at,
|
|
); nil != err {
|
|
return "", err
|
|
}
|
|
|
|
return id, nil
|
|
}
|