/// <summary> /// Get parameter list. /// </summary> protected override string GetParamDefs(DbColumnsSelection selection) { var text = GetColumnsText(selection, ",\n ", c => $"{GetDirection(ParameterDirection.Input)} {c.GetSqlParamName()} {c.GetSqlColumnType()}"); return(!string.IsNullOrEmpty(text) ? "\n " + text + "\n" : text); }
/// <summary> /// Get an aggregated text from a columns selection. /// </summary> public static string AggregateText(this IDbTableBinding binding, DbColumnsSelection selection, string separator, Func <IDbColumnBinding, string> action) { if (selection != DbColumnsSelection.None) { return(binding.Columns.Where(c => IsSelected(binding, c, selection)).AggregateText(separator, action)); } return(string.Empty); }
/// <summary> /// Get a column binding. /// </summary> public static IDbColumnBinding GetColumn(this IDbTableBinding binding, DbColumnsSelection selection) { var col = binding.FindColumn(selection); if (col == null) { throw new ArgumentException($"Invalid column of kind {selection} in table [{binding.TableName}]"); } return(col); }
/// <summary> /// Get a list from a columns selection. /// </summary> protected string GetColumnsText(DbColumnsSelection selection, string separator, Func <IDbColumnBinding, string> action) { return(Binding.AggregateText(selection, separator, action)); }
/// <summary> /// Get filter list. /// </summary> protected virtual string GetMatchCondition(DbColumnsSelection selection) { var text = GetColumnsText(selection, "\n\tAND ", c => $"{c.GetSqlColumnName()} = {c.GetSqlParamName()}"); return(!string.IsNullOrEmpty(text) ? " " + text : text); }
/// <summary> /// Get a list of fields assignments. /// </summary> protected virtual string GetFieldAssignments(DbColumnsSelection selection) { return(GetColumnsText(selection, ",\n\t", c => $"{c.GetSqlColumnName()} = {c.GetSqlParamName()}")); }
/// <summary> /// Get a list of columns names. /// </summary> protected virtual string GetColumnNames(DbColumnsSelection selection) { return(GetColumnsText(selection, ",\n\t", c => c.GetSqlColumnName())); }
/// <summary> /// Get parameter list. /// </summary> protected abstract string GetParamDefs(DbColumnsSelection selection);
/// <summary> /// Finds a column binding. /// </summary> public static IDbColumnBinding FindColumn(this IDbTableBinding binding, DbColumnsSelection selection) { return(binding.Columns?.FirstOrDefault(c => IsSelected(binding, c, selection))); }
/// <summary> /// Check if a table has columns of a certain type. /// </summary> public static bool HasColumns(this IDbTableBinding binding, DbColumnsSelection selection) { return(binding.Columns.Any(c => IsSelected(binding, c, selection))); }
/// <summary> /// Check whether if a column matches a selection criteria or not. /// </summary> public static bool IsSelected(IDbTableBinding binding, IDbColumnBinding column, DbColumnsSelection selection) { switch (selection) { case DbColumnsSelection.None: return(false); case DbColumnsSelection.AutoInc: return(column.IsAutoIncrement); case DbColumnsSelection.NonAutoInc: return(!column.IsAutoIncrement); case DbColumnsSelection.PrimaryKey: return(IsInPrimaryKey(binding, column)); case DbColumnsSelection.NonPrimaryKey: return(!IsInPrimaryKey(binding, column)); case DbColumnsSelection.UniqueKey: return(IsInUniqueKey(binding, column)); case DbColumnsSelection.All: default: return(true); } }
/// <summary> /// Maps an action to every column. /// </summary> public static void MapColumns(this IDbTableBinding binding, DbColumnsSelection selection, Action <IDbColumnBinding> action) { binding.Columns.Where(c => IsSelected(binding, c, selection)).ForEach(c => action(c)); }