+39
-1
@@ -363,7 +363,7 @@ func (s *Store) ListTokens(ctx context.Context) ([]TokenWithUser, error) {
|
||||
var expiresAt string
|
||||
var disabledAt sql.NullString
|
||||
var disabledInt int
|
||||
if err := rows.Scan(&t.ID, &t.UserID, &t.Token, &createdAt, &expiresAt, &disabledInt, &disabledAt, &t.MaxUses, &t.UsedCount, &t.Username); err != nil {
|
||||
if err := rows.Scan(&t.ID, &t.UserID, &t.Token.Token, &createdAt, &expiresAt, &disabledInt, &disabledAt, &t.MaxUses, &t.UsedCount, &t.Username); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ct, err := time.Parse(timeFormat, createdAt)
|
||||
@@ -392,6 +392,44 @@ func (s *Store) ListTokens(ctx context.Context) ([]TokenWithUser, error) {
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (s *Store) ListUsageEntries(ctx context.Context, limit int) ([]UsageEntry, error) {
|
||||
query := `SELECT created_at, request_ip, user_id, token_id, original_url, http_status, success, error_reason
|
||||
FROM token_usage
|
||||
ORDER BY id DESC`
|
||||
args := []any{}
|
||||
if limit > 0 {
|
||||
query += ` LIMIT ?`
|
||||
args = append(args, limit)
|
||||
}
|
||||
|
||||
rows, err := s.db.QueryContext(ctx, query, args...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var out []UsageEntry
|
||||
for rows.Next() {
|
||||
var e UsageEntry
|
||||
var createdAt string
|
||||
var successInt int
|
||||
if err := rows.Scan(&createdAt, &e.RequestIP, &e.UserID, &e.TokenID, &e.OriginalURL, &e.HTTPStatus, &successInt, &e.ErrorReason); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
parsed, err := time.Parse(timeFormat, createdAt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
e.OccurredAt = parsed
|
||||
e.Success = successInt == 1
|
||||
out = append(out, e)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (s *Store) RecordUsageAndMaybeIncrement(ctx context.Context, entry UsageEntry, increment bool) error {
|
||||
if entry.OccurredAt.IsZero() {
|
||||
entry.OccurredAt = time.Now().UTC()
|
||||
|
||||
Reference in New Issue
Block a user