All files / src/lib/api leadership-metrics.ts

100% Statements 6/6
100% Branches 4/4
100% Functions 1/1
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30                                  1x   4x 4x     4x 1x   3x      
import { request } from "./base";
 
export type MetricsWindow = {
	d1: number;
	d2: number;
	d7: number;
	d30: number;
};
 
export type LeadershipMetrics = {
	leads: MetricsWindow;
	landingLeads: MetricsWindow;
	pros: MetricsWindow;
	homeowners: MetricsWindow;
	generatedAt: string;
};
 
export const leadershipMetricsApi = {
	async get(options?: { fresh?: boolean }): Promise<LeadershipMetrics> {
		const qs = options?.fresh ? "?fresh=1" : "";
		const response = await request<LeadershipMetrics>(
			`/api/leadership-metrics${qs}`,
		);
		if (!response.data) {
			throw new Error("Empty metrics response");
		}
		return response.data;
	},
};