feat: protect sensitive catalog samples

This commit is contained in:
Codex
2026-08-30 12:14:23 +02:00
parent 6278ee9d81
commit 0736983bc5
28 changed files with 1162 additions and 128 deletions
@@ -0,0 +1,29 @@
import { expect, test } from "vitest";
import { syntheticSampleValue } from "../src/catalog/synthetic-sample-value.js";
test.each([
["text[]", "tags", 1, "{tags_001,tags_002}"],
["json", "payload", 2, '{"example":"payload_002","sequence":2}'],
["jsonb", "attributes", 3, '{"example":"attributes_003","sequence":3}'],
["inet", "client_ip", 4, "192.0.2.4"],
["cidr", "network", 5, "192.0.2.0/24"],
["time without time zone", "opening_time", 6, "10:30:06"],
["interval", "duration", 7, "7 days 07:00:00"],
["bytea", "digest", 8, "\\x00000008"],
] as const)(
"creates a deterministic PostgreSQL-shaped value for %s",
(dataType, name, index, expected) => {
const column = { name, dataType };
expect(syntheticSampleValue(column, index)).toBe(expected);
expect(syntheticSampleValue(column, index)).toBe(expected);
},
);
test("uses the PostgreSQL type before birth-related name hints", () => {
expect(syntheticSampleValue({ name: "birth_year", dataType: "integer" }, 2)).toBe(1002);
expect(syntheticSampleValue({ name: "birth_date", dataType: "date" }, 2))
.toBe("1982-01-02");
expect(syntheticSampleValue({ name: "birth_recorded_at", dataType: "timestamp" }, 2))
.toBe("2024-01-02T10:30:00.000Z");
});