public static async Task <Result <T> > QuerySingle <T>(this DapperSqlDb db, string sql, object queryParams = null) { return(await db.Query <T>(sql, queryParams ?? new { }) .Then(x => x.ToList()) .Then(x => x.Count.Equals(1) ? x.First() : x.Count.Equals(0) ? Result <T> .Errored(ResultStatus.MissingResource, $"No matching sql records found for {typeof(T).Name}") : Result <T> .Errored(ResultStatus.ProcessingError, $"Expected exactly one sql record, but {x.Count} were returned."))); }
public static async Task <Result <T> > QueryFirst <T>(this DapperSqlDb db, string sql, string itemContext, object queryParams = null) { if (string.Equals(itemContext, "string", StringComparison.InvariantCultureIgnoreCase)) { throw new ArgumentException("Developer Error: Item Context must be supplied when returning a primitive value from SQL."); } return(await db.Query <T>(sql, queryParams ?? new { }) .Then(x => x.ToList()) .Then(x => x.Any() ? x.First() : Result <T> .Errored(ResultStatus.MissingResource, $"No matching sql records found for {itemContext}"))); }
public static async Task <Result <IEnumerable <T> > > Query <T>(this DapperSqlDb db, string sql, DataTable dt, string tableValueParameterName, string tableValueParameterType) => await db.Query <T>(sql, new Dictionary <string, object> { { tableValueParameterName, dt.AsTableValuedParameter(tableValueParameterType) } });
public static async Task <Result> Execute(this DapperSqlDb db, string sql, DataTable dt, string tableValueParameterName, string tableValueParameterType) => await db.Execute(sql, new Dictionary <string, object> { { tableValueParameterName, dt.AsTableValuedParameter(tableValueParameterType) } });
public static async Task <Result <T> > QueryFirst <T>(this DapperSqlDb db, string sql, object queryParams = null) => await QueryFirst <T>(db, sql, typeof(T).Name, queryParams);