This commit is contained in:
2020-01-15 23:24:29 +00:00
parent 6a842ea063
commit ea98af4e82
8 changed files with 18 additions and 25 deletions

View File

@@ -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 namespace AyaNova.Biz
{ {

View File

@@ -9,7 +9,7 @@ namespace AyaNova.Biz
// This contains all the fields that are: // This contains all the fields that are:
// - Customizable on forms // - Customizable on forms
// - In grid list templates // - 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 public static class ObjectFields
{ {

View File

@@ -40,15 +40,15 @@ namespace AyaNova.Biz
//BUILD WHERE AND APPEND IT //BUILD WHERE AND APPEND IT
//qCriteria = FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions(), userId); //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 //BUILD ORDER BY AND APPEND IT
qSort = FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); qSort = SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
} }
else else
{ {
//GET DEFAULT ORDER BY //GET DEFAULT ORDER BY
qSort = FilterSqlOrderByBuilder.DefaultPickListOrderBy(); qSort = SqlFilterOrderByBuilder.DefaultPickListOrderBy();
} }
//ITEMS //ITEMS

View File

@@ -353,7 +353,7 @@ namespace AyaNova.Biz
{ {
SearchResult SR = new SearchResult(); 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.Id = i.ObjectId;
SR.Type = i.ObjectType; SR.Type = i.ObjectType;

View File

@@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
public static class FilterSqlCriteriaBuilder public static class SqlFilterCriteriaBuilder
{ {
public static string DataFilterToSQLCriteria(AyaNova.Models.DataFilter dataFilter, List<ObjectField> objectFields, long userId) public static string DataFilterToSQLCriteria(AyaNova.Models.DataFilter dataFilter, List<ObjectField> objectFields, long userId)
{ {

View File

@@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
public static class FilterSqlOrderByBuilder public static class SqlFilterOrderByBuilder
{ {
public static string DefaultGetManyOrderBy() public static string DefaultGetManyOrderBy()

View File

@@ -191,15 +191,15 @@ namespace AyaNova.Biz
var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == pagingOptions.DataFilterId); var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == pagingOptions.DataFilterId);
//BUILD WHERE AND APPEND IT //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 //BUILD ORDER BY AND APPEND IT
q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); q = q + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
} }
else else
{ {
//GET DEFAULT ORDER BY //GET DEFAULT ORDER BY
q = q + FilterSqlOrderByBuilder.DefaultGetManyOrderBy(); q = q + SqlFilterOrderByBuilder.DefaultGetManyOrderBy();
} }

View File

@@ -276,6 +276,11 @@ namespace AyaNova.Biz
listOptions.Limit = listOptions.Limit ?? ListOptions.DefaultLimit; listOptions.Limit = listOptions.Limit ?? ListOptions.DefaultLimit;
//BUILD THE QUERY //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 //base query
var q = "SELECT *, xmin FROM AWIDGET "; var q = "SELECT *, xmin FROM AWIDGET ";
@@ -285,15 +290,15 @@ namespace AyaNova.Biz
var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId); var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId);
//BUILD WHERE AND APPEND IT //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 //BUILD ORDER BY AND APPEND IT
q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); q = q + SqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
} }
else else
{ {
//GET DEFAULT ORDER BY //GET DEFAULT ORDER BY
q = q + FilterSqlOrderByBuilder.DefaultGetManyOrderBy(); q = q + SqlFilterOrderByBuilder.DefaultGetManyOrderBy();
} }