Skip to content

Commit 79542c5

Browse files
committed
extract getDefaultTimeRange and addTimeRangeParams
1 parent 8785f8b commit 79542c5

File tree

1 file changed

+39
-45
lines changed

1 file changed

+39
-45
lines changed

tools/loki.go

Lines changed: 39 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -259,28 +259,52 @@ type QueryRangeResponse struct {
259259
} `json:"data"`
260260
}
261261

262-
// fetchLogs is a method to fetch logs from Loki API
263-
func (c *Client) fetchLogs(ctx context.Context, query, startRFC3339, endRFC3339 string, limit int, direction string) ([]LogStream, error) {
264-
params := url.Values{}
265-
params.Add("query", query)
266-
267-
// Convert RFC3339 timestamps to Unix nanoseconds if provided
262+
// addTimeRangeParams adds start and end time parameters to the URL values
263+
// It handles conversion from RFC3339 to Unix nanoseconds
264+
func addTimeRangeParams(params url.Values, startRFC3339, endRFC3339 string) error {
268265
if startRFC3339 != "" {
269266
startTime, err := time.Parse(time.RFC3339, startRFC3339)
270267
if err != nil {
271-
return nil, fmt.Errorf("parsing start time: %w", err)
268+
return fmt.Errorf("parsing start time: %w", err)
272269
}
273270
params.Add("start", fmt.Sprintf("%d", startTime.UnixNano()))
274271
}
275272

276273
if endRFC3339 != "" {
277274
endTime, err := time.Parse(time.RFC3339, endRFC3339)
278275
if err != nil {
279-
return nil, fmt.Errorf("parsing end time: %w", err)
276+
return fmt.Errorf("parsing end time: %w", err)
280277
}
281278
params.Add("end", fmt.Sprintf("%d", endTime.UnixNano()))
282279
}
283280

281+
return nil
282+
}
283+
284+
// getDefaultTimeRange returns default start and end times if not provided
285+
// Returns start time (1 hour ago) and end time (now) in RFC3339 format
286+
func getDefaultTimeRange(startRFC3339, endRFC3339 string) (string, string) {
287+
if startRFC3339 == "" {
288+
// Default to 1 hour ago if not specified
289+
startRFC3339 = time.Now().Add(-1 * time.Hour).Format(time.RFC3339)
290+
}
291+
if endRFC3339 == "" {
292+
// Default to now if not specified
293+
endRFC3339 = time.Now().Format(time.RFC3339)
294+
}
295+
return startRFC3339, endRFC3339
296+
}
297+
298+
// fetchLogs is a method to fetch logs from Loki API
299+
func (c *Client) fetchLogs(ctx context.Context, query, startRFC3339, endRFC3339 string, limit int, direction string) ([]LogStream, error) {
300+
params := url.Values{}
301+
params.Add("query", query)
302+
303+
// Add time range parameters
304+
if err := addTimeRangeParams(params, startRFC3339, endRFC3339); err != nil {
305+
return nil, err
306+
}
307+
284308
if limit > 0 {
285309
params.Add("limit", fmt.Sprintf("%d", limit))
286310
}
@@ -342,17 +366,8 @@ func queryLokiLogs(ctx context.Context, args QueryLokiLogsParams) ([]LogEntry, e
342366
return nil, fmt.Errorf("creating Loki client: %w", err)
343367
}
344368

345-
// Set default time range if not provided
346-
startTime := args.StartRFC3339
347-
endTime := args.EndRFC3339
348-
if startTime == "" {
349-
// Default to 1 hour ago if not specified
350-
startTime = time.Now().Add(-1 * time.Hour).Format(time.RFC3339)
351-
}
352-
if endTime == "" {
353-
// Default to now if not specified
354-
endTime = time.Now().Format(time.RFC3339)
355-
}
369+
// Get default time range if not provided
370+
startTime, endTime := getDefaultTimeRange(args.StartRFC3339, args.EndRFC3339)
356371

357372
// Apply limit constraints
358373
limit := enforceLogLimit(args.Limit)
@@ -408,21 +423,9 @@ func (c *Client) fetchStats(ctx context.Context, query, startRFC3339, endRFC3339
408423
params := url.Values{}
409424
params.Add("query", query)
410425

411-
// Convert RFC3339 timestamps to Unix nanoseconds if provided
412-
if startRFC3339 != "" {
413-
startTime, err := time.Parse(time.RFC3339, startRFC3339)
414-
if err != nil {
415-
return nil, fmt.Errorf("parsing start time: %w", err)
416-
}
417-
params.Add("start", fmt.Sprintf("%d", startTime.UnixNano()))
418-
}
419-
420-
if endRFC3339 != "" {
421-
endTime, err := time.Parse(time.RFC3339, endRFC3339)
422-
if err != nil {
423-
return nil, fmt.Errorf("parsing end time: %w", err)
424-
}
425-
params.Add("end", fmt.Sprintf("%d", endTime.UnixNano()))
426+
// Add time range parameters
427+
if err := addTimeRangeParams(params, startRFC3339, endRFC3339); err != nil {
428+
return nil, err
426429
}
427430

428431
bodyBytes, err := c.makeRequest(ctx, "GET", "/loki/api/v1/index/stats", params)
@@ -454,17 +457,8 @@ func queryLokiStats(ctx context.Context, args QueryLokiStatsParams) (*Stats, err
454457
return nil, fmt.Errorf("creating Loki client: %w", err)
455458
}
456459

457-
// Set default time range if not provided
458-
startTime := args.StartRFC3339
459-
endTime := args.EndRFC3339
460-
if startTime == "" {
461-
// Default to 1 hour ago if not specified
462-
startTime = time.Now().Add(-1 * time.Hour).Format(time.RFC3339)
463-
}
464-
if endTime == "" {
465-
// Default to now if not specified
466-
endTime = time.Now().Format(time.RFC3339)
467-
}
460+
// Get default time range if not provided
461+
startTime, endTime := getDefaultTimeRange(args.StartRFC3339, args.EndRFC3339)
468462

469463
stats, err := client.fetchStats(ctx, args.LogQL, startTime, endTime)
470464
if err != nil {

0 commit comments

Comments
 (0)