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
{

View File

@@ -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
{

View File

@@ -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

View File

@@ -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;

View File

@@ -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<ObjectField> objectFields, long userId)
{

View File

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

View File

@@ -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();
}

View File

@@ -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();
}