adding optional password on metric_file/[id]/data endpoint

This commit is contained in:
Wells Bunker 2025-09-26 09:41:14 -06:00
parent 152f95c768
commit aed9732302
No known key found for this signature in database
GPG Key ID: DB16D6F2679B78FC
3 changed files with 14 additions and 5 deletions

View File

@ -12,10 +12,17 @@ const app = new Hono()
zValidator('query', MetricDataQuerySchema), zValidator('query', MetricDataQuerySchema),
async (c) => { async (c) => {
const { id } = c.req.valid('param'); const { id } = c.req.valid('param');
const { limit, version_number, report_file_id } = c.req.valid('query'); const { limit, version_number, report_file_id, password } = c.req.valid('query');
const user = c.get('busterUser'); const user = c.get('busterUser');
const response = await getMetricDataHandler(id, user, limit, version_number, report_file_id); const response = await getMetricDataHandler(
id,
user,
limit,
version_number,
report_file_id,
password
);
return c.json(response); return c.json(response);
} }

View File

@ -36,7 +36,8 @@ export async function getMetricDataHandler(
user: User, user: User,
limit = 5000, limit = 5000,
versionNumber?: number, versionNumber?: number,
reportFileId?: string reportFileId?: string,
password?: string
): Promise<MetricDataResponse> { ): Promise<MetricDataResponse> {
// Retrieve metric definition from database with data source info // Retrieve metric definition from database with data source info
const metric = await getMetricWithDataSource({ metricId, versionNumber }); const metric = await getMetricWithDataSource({ metricId, versionNumber });
@ -63,7 +64,7 @@ export async function getMetricDataHandler(
publiclyAccessible: metric.publiclyAccessible, publiclyAccessible: metric.publiclyAccessible,
publicExpiryDate: metric.publicExpiryDate ?? undefined, publicExpiryDate: metric.publicExpiryDate ?? undefined,
publicPassword: metric.publicPassword ?? undefined, publicPassword: metric.publicPassword ?? undefined,
userSuppliedPassword: undefined, userSuppliedPassword: password,
}); });
if (!hasAccess) { if (!hasAccess) {

View File

@ -54,8 +54,9 @@ export type MetricDataParams = z.infer<typeof MetricDataParamsSchema>;
*/ */
export const MetricDataQuerySchema = z.object({ export const MetricDataQuerySchema = z.object({
limit: z.coerce.number().min(1).max(5000).default(5000).optional(), limit: z.coerce.number().min(1).max(5000).default(5000).optional(),
version_number: z.coerce.number().optional(), version_number: z.coerce.number().int().min(1).optional(),
report_file_id: z.string().uuid().optional(), report_file_id: z.string().uuid().optional(),
password: z.string().min(1).optional(),
}); });
export type MetricDataQuery = z.infer<typeof MetricDataQuerySchema>; export type MetricDataQuery = z.infer<typeof MetricDataQuerySchema>;