using System;
using System.Collections.Generic;
namespace SyncEngine.Access
{
///
/// Case-insensitive table name → column list for expanding table.* in view SQL.
///
public sealed class ViewColumnCatalog
{
private readonly Dictionary> _columns;
public ViewColumnCatalog(IDictionary> columns)
{
_columns = new Dictionary>(StringComparer.OrdinalIgnoreCase);
if (columns == null)
{
return;
}
foreach (var entry in columns)
{
_columns[entry.Key] = entry.Value;
}
}
public bool TryGetColumns(string tableName, out IReadOnlyList columns)
{
columns = null;
if (string.IsNullOrWhiteSpace(tableName))
{
return false;
}
return _columns.TryGetValue(NormalizeTableName(tableName), out columns);
}
public static string NormalizeTableName(string tableRef)
{
var name = tableRef.Trim();
if (name.StartsWith("[", StringComparison.Ordinal) && name.EndsWith("]", StringComparison.Ordinal))
{
return name.Substring(1, name.Length - 2);
}
return name;
}
}
}