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}";
}
}