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