namespace Omika.HfSqlProbe; internal static class ProbeSqlBuilder { /// /// Builds INSERT ... RETURNING <idColumn>. /// Defensively validates all identifiers before interpolation. /// public static string BuildInsertReturning(string table, string idColumn, string markerColumn) { SqlIdentifierValidator.Validate(table); SqlIdentifierValidator.Validate(idColumn); SqlIdentifierValidator.Validate(markerColumn); return $"INSERT INTO {table} ({markerColumn}) VALUES (?) RETURNING {idColumn}"; } /// Count rows matching a marker value. public static string BuildCountByMarker(string table, string markerColumn) { SqlIdentifierValidator.Validate(table); SqlIdentifierValidator.Validate(markerColumn); return $"SELECT COUNT(*) FROM {table} WHERE {markerColumn} = ?"; } /// Insert a marker row (no RETURNING). public static string BuildInsertMarker(string table, string markerColumn) { SqlIdentifierValidator.Validate(table); SqlIdentifierValidator.Validate(markerColumn); return $"INSERT INTO {table} ({markerColumn}) VALUES (?)"; } /// Read GUID samples. public static string BuildSelectGuids(int limit) { return "SELECT GUID FROM Client WHERE GUID IS NOT NULL AND GUID <> '' " + $"LIMIT {limit}"; } }