This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
@@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
public static class FilterSqlOrderByBuilder
|
||||
public static class SqlFilterOrderByBuilder
|
||||
{
|
||||
|
||||
public static string DefaultGetManyOrderBy()
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user