/// <inheritdoc cref="QueryAsync{T}(IDbQuery, ulong, Func{IQueryBuilder, IQueryBuilderWithFrom}, IDbTransaction)"/> public static Task <Maybe <T> > QuerySingleAsync <T>( this IDbQuery @this, Func <IQueryBuilder, IQueryBuilderWithFrom> builder, IDbTransaction transaction ) => QueryBuilderF.Build <T>( builder ) .BindAsync( x => @this.QuerySingleAsync <T>(x, transaction) );
/// <summary> /// Use a fluent <see cref="IQueryBuilder"/> to create a query to run against the database /// </summary> /// <typeparam name="T">Return model type</typeparam> /// <param name="this">IDbQuery</param> /// <param name="page">Page number</param> /// <param name="builder">Query builder</param> /// <param name="transaction">Database transaction</param> public static Task <Maybe <IPagedList <T> > > QueryAsync <T>( this IDbQuery @this, ulong page, Func <IQueryBuilder, IQueryBuilderWithFrom> builder, IDbTransaction transaction ) => QueryBuilderF.Build <T>( builder ) .BindAsync( x => @this.QueryAsync <T>(page, x, transaction) );
public void Unable_To_Get_Column_Throws_UnableToGetColumnFromExpressionException() { // Arrange // Act var a0 = void() => QueryBuilderF.GetColumnFromExpression <BrokenTable>(t => t.Bar); var a1 = void() => QueryBuilderF.GetColumnFromExpression(new BrokenTable(), t => t.Bar); // Assert Assert.Throws <UnableToGetColumnFromExpressionException <BrokenTable> >(a0); Assert.Throws <UnableToGetColumnFromExpressionException <BrokenTable> >(a1); }
public void Catches_Exception_Running_Builder_Returns_None_With_QueryBuilderExceptionMsg() { // Arrange var builder = Substitute.For <Func <IQueryBuilder, IQueryBuilderWithFrom> >(); builder.Invoke(Arg.Any <IQueryBuilder>()).Throws <Exception>(); // Act var result = QueryBuilderF.Build <int>(builder); // Assert result.AssertNone().AssertType <QueryBuilderExceptionMsg>(); }
public void Returns_Column_With_Property_Value_As_Name_And_Property_Name_As_Alias() { // Arrange var tableName = Rnd.Str; var table = new TestTable(tableName); // Act var r0 = QueryBuilderF.GetColumnFromExpression(table, t => t.Foo); var r1 = QueryBuilderF.GetColumnFromExpression <TestTable>(t => t.Foo); // Assert Assert.Equal(tableName, r0.TblName.Name); Assert.Equal(table.Foo, r0.ColName); Assert.Equal(nameof(table.Foo), r0.ColAlias); Assert.Equal(nameof(TestTable), r1.TblName.Name); Assert.Equal(table.Foo, r1.ColName); Assert.Equal(nameof(table.Foo), r1.ColAlias); }