/// <summary> /// Build Sql command and parameters from the shorthand fluent syntax /// </summary> /// <remarks> /// //Example query with multiple blocks /// cmd.BuildSelect(builder => /// { /// builder.Limit = 100; /// builder.Select("T1.*").From("dbo", "TBL_USER", "T1"); /// /// builder.WhereBlockBegin(WhereClauseType.Or) /// .AndWhere("T1.FIRSTNAME = ?FN1", new MySqlParameter("FN1", "Adam")) /// .AndWhere("T1.FIRSTNAME != ?FN2", new MySqlParameter("FN2", "Amber")) /// .WhereBlockEnd(); /// /// builder.WhereBlockBegin(WhereClauseType.Or) /// .AndWhere("T1.LASTNAME = ?LN1", new MySqlParameter("LN1", "Adamson")) /// .AndWhere("T1.LASTNAME != ?LN2", new MySqlParameter("LN2", "Amberman")) /// .WhereBlockEnd(); /// /// builder.OrderByAsc("T1.LASTNAME") /// .OrderByDesc("T1.FIRSTNAME"); /// builder.GroupBy("T1.FIRSTNAME"); /// builder.Having("T1.SCORE > ?SCORE", new MySqlParameter("SCORE", 12_000)); ///}); /// </remarks> public static MySqlCommand BuildSelect(this MySqlCrudQueryExecutionContext ctx, MySqlCommand command, IBusinessFilterModel filter, Action <MySqlSelectBuilder> body) { command.NonNull(nameof(command)); body.NonNull(nameof(body)); using (var builder = MySqlSelectBuilder.For(ctx.DataStore.SchemaName.NonBlank("schema-name"))) { builder.Limit = filter.NonNull(nameof(filter)).PagingCount; body(builder); builder.Build(command); } return(command); }
public async Task <object> Filter(IBusinessFilterModel filter) => await ApplyFilter(filter);