internal EndRankingChainer(Chainer prev) : base(prev) { Build = (buildContext, buildArgs) => { StringBuilder sql = new StringBuilder(); Chainer node = GetPrev <RankingChainer>(); while (node != this) { var append = node.Build(buildContext, buildArgs); TryThrow(buildContext); if (append != null) { sql.Append(append); } node = node.Next; } return(Text.GenerateSql(200) .Append(sql.TrimEnd()) .Append(Text.RightBracket) .ToString()); }; }
internal OrderedChainer(Chainer prev, SortOrder sortOrder) : base(prev) { Build = (buildContext, buildArgs) => { return(String.Format("{0} {1}", prev.Build(buildContext, buildArgs), sortOrder.ToUpperCase())); }; }
internal ColumnAsChainer(Chainer prev, string alias) : base(prev, alias) { if (!CheckNull(Arg(() => prev, prev))) { chainException.Extra = Text.Free.ChainObjectNullExtra; return; } if (chainException != null) { return; } _columnName = alias; _prevBuild = (buildContext, buildArgs) => { return(prev.Build(buildContext, buildArgs)); }; Build = (buildContext, buildArgs) => { // do not perform critical alias check on scalars, only on table arguments if (!(prev is IScalar)) { Statement.CheckAlias(this); } var sql = Text.GenerateSql(20) .Append(prev.Build(buildContext, buildArgs)) .Append(Text._As_) .Append(Filter.Delimit(Name)) .ToString(); TryThrow(buildContext); return(sql); }; }
private string BuildCase(BuildContext buildContext, BuildArgs buildArgs) { var sql = new StringBuilder(); Chainer node = GetPrev <CaseChainer>(); while (node != this) { object append = null; append = node.Build(buildContext, buildArgs); if (append != null) { sql.Append(append); sql.S(); } node = node.Next; } return(sql.TrimEnd().ToString()); }
internal CollateChainer(Chainer prev, string collation) : base(prev) { CheckNullAndThrow(Arg(() => collation, collation)); Build = (buildContext, buildArgs) => { if (prev is IColumnName) { _columnName = ((IColumnName)prev).ColumnName; } return(Text.GenerateSql(50) .Append(prev.Build(buildContext, buildArgs)).S() .Append(Text.Collate).S() .Append(collation) .ToString()); }; }