From ea98af4e82ee188041aca0e8c82d49a4db2b0af1 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 15 Jan 2020 23:24:29 +0000 Subject: [PATCH] --- server/AyaNova/biz/BizObjectNameFetcherDirect.cs | 12 ------------ server/AyaNova/biz/ObjectFields.cs | 2 +- server/AyaNova/biz/PickListFetcher.cs | 6 +++--- server/AyaNova/biz/Search.cs | 2 +- ...riteriaBuilder.cs => SqlFilterCriteriaBuilder.cs} | 2 +- ...lOrderByBuilder.cs => SqlFilterOrderByBuilder.cs} | 2 +- server/AyaNova/biz/UserBiz.cs | 6 +++--- server/AyaNova/biz/WidgetBiz.cs | 11 ++++++++--- 8 files changed, 18 insertions(+), 25 deletions(-) rename server/AyaNova/biz/{FilterSqlCriteriaBuilder.cs => SqlFilterCriteriaBuilder.cs} (99%) rename server/AyaNova/biz/{FilterSqlOrderByBuilder.cs => SqlFilterOrderByBuilder.cs} (96%) diff --git a/server/AyaNova/biz/BizObjectNameFetcherDirect.cs b/server/AyaNova/biz/BizObjectNameFetcherDirect.cs index d3e8f10a..245861c2 100644 --- a/server/AyaNova/biz/BizObjectNameFetcherDirect.cs +++ b/server/AyaNova/biz/BizObjectNameFetcherDirect.cs @@ -1,15 +1,3 @@ -using System.Linq; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.JsonPatch; -using EnumsNET; -using AyaNova.Util; -using AyaNova.Api.ControllerHelpers; -using AyaNova.Biz; -using AyaNova.Models; - - namespace AyaNova.Biz { diff --git a/server/AyaNova/biz/ObjectFields.cs b/server/AyaNova/biz/ObjectFields.cs index 0b6bc26c..ea1b2453 100644 --- a/server/AyaNova/biz/ObjectFields.cs +++ b/server/AyaNova/biz/ObjectFields.cs @@ -9,7 +9,7 @@ namespace AyaNova.Biz // This contains all the fields that are: // - Customizable on forms // - In grid list templates - //In addition it serves as a source for valid object keys in AvailableObjectKeys + //In addition it serves as a source for valid object keys in AvailableObjectKeys, and a source of database column names (tolower) // public static class ObjectFields { diff --git a/server/AyaNova/biz/PickListFetcher.cs b/server/AyaNova/biz/PickListFetcher.cs index 5e6c9700..24641140 100644 --- a/server/AyaNova/biz/PickListFetcher.cs +++ b/server/AyaNova/biz/PickListFetcher.cs @@ -40,15 +40,15 @@ namespace AyaNova.Biz //BUILD WHERE AND APPEND IT //qCriteria = FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions(), userId); - qCriteria = FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, objectFields, userId); + qCriteria = SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, objectFields, userId); //BUILD ORDER BY AND APPEND IT - qSort = FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); + qSort = SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); } else { //GET DEFAULT ORDER BY - qSort = FilterSqlOrderByBuilder.DefaultPickListOrderBy(); + qSort = SqlFilterOrderByBuilder.DefaultPickListOrderBy(); } //ITEMS diff --git a/server/AyaNova/biz/Search.cs b/server/AyaNova/biz/Search.cs index e5a2f6e2..55bd323c 100644 --- a/server/AyaNova/biz/Search.cs +++ b/server/AyaNova/biz/Search.cs @@ -353,7 +353,7 @@ namespace AyaNova.Biz { SearchResult SR = new SearchResult(); - SR.Name = BizObjectNameFetcherDirect.Name(i, command);//THIS IS CAUSING ALL THE SLOWNESS IN RETURNING SEARCH RESULTS + SR.Name = BizObjectNameFetcherDirect.Name(i, command);//THIS IS CAUSING ALL THE SLOWNESS IN RETURNING SEARCH RESULTS (...much later ??? WTF??) SR.Id = i.ObjectId; SR.Type = i.ObjectType; diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs similarity index 99% rename from server/AyaNova/biz/FilterSqlCriteriaBuilder.cs rename to server/AyaNova/biz/SqlFilterCriteriaBuilder.cs index b613c2c4..424d853b 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs @@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging; namespace AyaNova.Biz { - public static class FilterSqlCriteriaBuilder + public static class SqlFilterCriteriaBuilder { public static string DataFilterToSQLCriteria(AyaNova.Models.DataFilter dataFilter, List objectFields, long userId) { diff --git a/server/AyaNova/biz/FilterSqlOrderByBuilder.cs b/server/AyaNova/biz/SqlFilterOrderByBuilder.cs similarity index 96% rename from server/AyaNova/biz/FilterSqlOrderByBuilder.cs rename to server/AyaNova/biz/SqlFilterOrderByBuilder.cs index d839ea2e..c836d175 100644 --- a/server/AyaNova/biz/FilterSqlOrderByBuilder.cs +++ b/server/AyaNova/biz/SqlFilterOrderByBuilder.cs @@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging; namespace AyaNova.Biz { - public static class FilterSqlOrderByBuilder + public static class SqlFilterOrderByBuilder { public static string DefaultGetManyOrderBy() diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index 2b397800..0310e673 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -191,15 +191,15 @@ namespace AyaNova.Biz var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == pagingOptions.DataFilterId); //BUILD WHERE AND APPEND IT - q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.USER_KEY), UserId); + q = q + SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.USER_KEY), UserId); //BUILD ORDER BY AND APPEND IT - q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); + q = q + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); } else { //GET DEFAULT ORDER BY - q = q + FilterSqlOrderByBuilder.DefaultGetManyOrderBy(); + q = q + SqlFilterOrderByBuilder.DefaultGetManyOrderBy(); } diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 806e46dc..5bb62856 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -276,6 +276,11 @@ namespace AyaNova.Biz listOptions.Limit = listOptions.Limit ?? ListOptions.DefaultLimit; //BUILD THE QUERY + //TODO: Turn this into a raw direct query + //Build the select fragment from the template so only selected columns get fetched + //instead of projecting it onto a c# object EF style, bypass that and use a SQL data reader instead then create the result set as per the spec doc + + //base query var q = "SELECT *, xmin FROM AWIDGET "; @@ -285,15 +290,15 @@ namespace AyaNova.Biz var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId); //BUILD WHERE AND APPEND IT - q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.WIDGET_KEY), UserId); + q = q + SqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, ObjectFields.ObjectFieldsList(ObjectFields.WIDGET_KEY), UserId); //BUILD ORDER BY AND APPEND IT - q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); + q = q + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); } else { //GET DEFAULT ORDER BY - q = q + FilterSqlOrderByBuilder.DefaultGetManyOrderBy(); + q = q + SqlFilterOrderByBuilder.DefaultGetManyOrderBy(); }