/// <summary> /// On application start /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public static void OnQueryExecutedHandler(object sender, ExecutedQueryEventArgs args) { if (args == null) { return; } if (args.Completed) { Console.WriteLine($"Query {args.Query} executed in {args.Elapsed} ms"); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"Query {args.Query} throw an exception: {args.Exception}"); Console.ForegroundColor = ConsoleColor.White; } }
/// <summary> /// Get pagination request /// </summary> /// <param name="dbContext"></param> /// <param name="viewModel"></param> /// <param name="page"></param> /// <param name="perPage"></param> /// <param name="queryString"></param> /// <returns></returns> public static ResultModel <PaginationResponseViewModel> GetPaginationResult(this IEntityContext dbContext, EntityViewModel viewModel, uint page, uint perPage = 10, string queryString = null) { var response = new ResultModel <PaginationResponseViewModel>(); var watch = new Stopwatch(); watch.Start(); var evArgs = new ExecutedQueryEventArgs(); response.Result = new PaginationResponseViewModel { ViewModel = viewModel, Page = page, PerPage = perPage, }; if (viewModel == null) { return(response); } try { var sqlQuery = QueryBuilder.GetPaginationByFilters(viewModel, page, perPage, queryString); evArgs.Query = sqlQuery; var result = EntitiesFromSql(dbContext, sqlQuery, new Dictionary <string, object>()).ToList(); var countRequest = dbContext.GetCountByFilters(viewModel); if (countRequest.IsSuccess) { response.Result.Total = (uint)countRequest.Result; } response.Result.ViewModel.Values = result; response.IsSuccess = true; } catch (Exception ex) { watch.Stop(); evArgs.Elapsed = watch.ElapsedMilliseconds; evArgs.Completed = false; evArgs.Exception = ex; EntityEvents.SqlQuery.QueryExecuted(evArgs); response.Errors.Add(new ErrorModel("_ex", ex.ToString())); return(response); } return(response); }
/// <summary> /// Rise new query executed /// </summary> /// <param name="e"></param> public static void QueryExecuted(ExecutedQueryEventArgs e) => SystemEvents.InvokeEvent(null, OnQueryExecuted, e, nameof(OnQueryExecuted));
public static ResultModel <EntityViewModel> GetEntityByParams(this IEntityContext dbContext, EntityViewModel viewModel) { var returnModel = new ResultModel <EntityViewModel> { IsSuccess = false, Result = new EntityViewModel { Includes = new List <EntityViewModel>() } }; var watch = new Stopwatch(); var evArgs = new ExecutedQueryEventArgs(); watch.Start(); //For Add Single Field To Parent if no Exist viewModel = AddFieldForSingle(viewModel); returnModel.Result = viewModel; if (viewModel == null) { return(returnModel); } try { var finalResult = new List <Dictionary <string, object> >(); if (viewModel.Values != null && viewModel.Values.Count > 0) { foreach (var listTableValue in viewModel.Values) { var sqlQuery = QueryBuilder.GetByColumnParameterQuery(viewModel, listTableValue); evArgs.Query = sqlQuery; var result = EntitiesFromSql(dbContext, sqlQuery, listTableValue).ToList(); finalResult.AddRange(result); } } else { var parameters = new Dictionary <string, object>(); var sqlQuery = QueryBuilder.GetByColumnParameterQuery(viewModel, parameters); var result = EntitiesFromSql(dbContext, sqlQuery, parameters).ToList(); finalResult.AddRange(result); } returnModel.Result.Values = finalResult; returnModel.IsSuccess = true; } catch (Exception ex) { evArgs.Exception = ex; evArgs.Completed = false; watch.Stop(); evArgs.Elapsed = watch.ElapsedMilliseconds; EntityEvents.SqlQuery.QueryExecuted(evArgs); Debug.WriteLine(ex); return(returnModel); } var values = GetRecursiveSingle(dbContext, viewModel, returnModel.Result.Values); returnModel.Result.Values = values; watch.Stop(); evArgs.Elapsed = watch.ElapsedMilliseconds; EntityEvents.SqlQuery.QueryExecuted(evArgs); return(returnModel); }