Skip to content

Commit 6b4ad84

Browse files
committed
fix(cli): align MetricDefinition.sqls type to Record<number, string>
Address code review feedback: the source interface used Record<string, string> while the generated output used Record<number, string>. Since PG major versions are semantically numbers and YAML parses numeric keys as numbers, align both to use Record<number, string> for consistency.
1 parent d7cc23e commit 6b4ad84

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

cli/scripts/embed-metrics.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const OUTPUT_PATH = path.resolve(CLI_DIR, "lib/metrics-embedded.ts");
2121

2222
interface MetricDefinition {
2323
description?: string;
24-
sqls: Record<string, string>;
24+
// YAML parses numeric keys (e.g., 11:, 14:) as numbers, representing PG major versions
25+
sqls: Record<number, string>;
2526
gauges?: string[];
2627
statement_timeout_seconds?: number;
2728
is_instance_level?: boolean;
@@ -121,10 +122,12 @@ function generateTypeScript(metrics: Record<string, MetricDefinition>): string {
121122
lines.push(` description: ${JSON.stringify(desc)},`);
122123
}
123124

124-
// Convert sqls keys from string to number and format
125+
// sqls keys are PG major versions (numbers in YAML, but Object.entries returns strings)
125126
lines.push(" sqls: {");
126-
for (const [version, sql] of Object.entries(metric.sqls)) {
127-
const versionNum = parseInt(version, 10);
127+
for (const [versionKey, sql] of Object.entries(metric.sqls)) {
128+
// YAML numeric keys may be parsed as numbers or strings depending on context;
129+
// explicitly convert to ensure consistent numeric keys in output
130+
const versionNum = typeof versionKey === "number" ? versionKey : parseInt(versionKey, 10);
128131
// Use template literal for SQL to preserve formatting
129132
const escapedSql = sql.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
130133
lines.push(` ${versionNum}: \`${escapedSql}\`,`);

0 commit comments

Comments
 (0)