Openstatus www.openstatus.dev
at main 38 lines 1.1 kB view raw
1/** 2 * Shared utilities for API routers 3 */ 4 5/** 6 * Supported time period values for filtering data 7 */ 8export const periods = ["1d", "7d", "14d"] as const; 9 10/** 11 * Period type for filtering data by time range 12 */ 13export type Period = (typeof periods)[number]; 14 15/** 16 * Converts a period string to a Date object representing the start of that period 17 * @param period - The period to convert (e.g., "1d", "7d", "14d") 18 * @returns Date object representing the start of the period (for use with gte filters) 19 * @example 20 * // Get date for 7 days ago 21 * const date = getPeriodDate("7d"); 22 * // Returns: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000) 23 */ 24export function getPeriodDate(period: Period): Date { 25 const now = Date.now(); 26 27 switch (period) { 28 case "1d": 29 return new Date(now - 1 * 24 * 60 * 60 * 1000); 30 case "7d": 31 return new Date(now - 7 * 24 * 60 * 60 * 1000); 32 case "14d": 33 return new Date(now - 14 * 24 * 60 * 60 * 1000); 34 default: 35 // TypeScript ensures this is exhaustive, but return 7d as safe fallback 36 return new Date(now - 7 * 24 * 60 * 60 * 1000); 37 } 38}