From ec41ccc76db17b80174b17224921f7a4a82f9355 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Sat, 30 Jan 2021 01:18:01 +0000 Subject: [PATCH] --- server/AyaNova/DataList/DataListFetcher.cs | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index d3bfb5ff..5eadd287 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -17,7 +17,7 @@ namespace AyaNova.DataList // Get the data list data requested // // - internal static async Task GetResponseAsync(AyContext ct, DataListTableProcessingOptions dataListTableOptions,IDataListProcessing DataList, AuthorizationRoles userRoles, ILogger log, long userId) + internal static async Task GetResponseAsync(AyContext ct, DataListTableProcessingOptions dataListTableProcessingOptions,IDataListProcessing DataList, AuthorizationRoles userRoles, ILogger log, long userId) { // var DataList = DataListFactory.GetAyaDataList(dataListTableRequest.DataListKey); @@ -26,11 +26,7 @@ namespace AyaNova.DataList // if (DataList == null) // throw new System.ArgumentOutOfRangeException($"DataList \"{dataListTableRequest.DataListKey}\" specified does not exist"); - - - - - //turn the DataListTableRequest into a DataListTableProcesingOptions object here + //turn the DataListTableRequest into a DataListTableProcesingOptions object here //hydrates filter and column selections etc // = new DataListTableProcessingOptions(dataListTableRequest, DataList, ct); @@ -48,7 +44,7 @@ namespace AyaNova.DataList //Get the combination of all unique fields from both StaticServerFilterOptions and listOptions //NOTE: this assumes no list options filter colums that don't exist in listoptions.columns - var AllUniqueFieldKeysRequiredForQuery = dataListTableOptions.Columns.Union(StaticServerFilterOptions.Select(z => z.Column).ToList()).ToList(); + // var AllUniqueFieldKeysRequiredForQuery = dataListTableOptions.Columns.Union(StaticServerFilterOptions.Select(z => z.Column).ToList()).ToList(); // //Add the internal filters into the listoptions existing filters // //NOTE: There is currently no overlap between internal filtered columns and filters coming from the client @@ -58,7 +54,7 @@ namespace AyaNova.DataList //BUILD THE QUERY //SELECT CLAUSE - var qSelect = DataListSqlSelectBuilder.BuildForDataTableListResponse(DataList.FieldDefinitions, AllUniqueFieldKeysRequiredForQuery); + var qSelect = DataListSqlSelectBuilder.BuildForDataTableListResponse(DataList.FieldDefinitions, dataListTableProcessingOptions.AllUniqueColumnKeysReferenced); //FROM CLAUSE var qFrom = DataList.SQLFrom; @@ -67,16 +63,16 @@ namespace AyaNova.DataList var qOrderBy = string.Empty; //WHERE CLAUSE - FILTER - qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, dataListTableOptions); + qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, dataListTableProcessingOptions); //ORDER BY CLAUSE - SORT //BUILD ORDER BY - qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, dataListTableOptions); + qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, dataListTableProcessingOptions); //LIMIT AND OFFSET CLAUSE - PAGING - dataListTableOptions.Offset = dataListTableOptions.Offset ?? DataListTableProcessingOptions.DefaultOffset; - dataListTableOptions.Limit = dataListTableOptions.Limit ?? DataListTableProcessingOptions.DefaultLimit; - var qLimitOffset = $"LIMIT {dataListTableOptions.Limit} OFFSET {dataListTableOptions.Offset}"; + dataListTableProcessingOptions.Offset = dataListTableProcessingOptions.Offset ?? DataListTableProcessingOptions.DefaultOffset; + dataListTableProcessingOptions.Limit = dataListTableProcessingOptions.Limit ?? DataListTableProcessingOptions.DefaultLimit; + var qLimitOffset = $"LIMIT {dataListTableProcessingOptions.Limit} OFFSET {dataListTableProcessingOptions.Offset}"; //PUT IT ALL TOGETHER string qDataQuery = string.Empty; @@ -86,7 +82,7 @@ namespace AyaNova.DataList qTotalRecordsQuery = $"SELECT COUNT(*) {qFrom} {qWhere}".Replace(" ", " "); //RETURN OBJECTS - int returnRowColumnCount = dataListTableOptions.Columns.Count(); + int returnRowColumnCount = dataListTableProcessingOptions.Columns.Count(); List> rows = new List>(); long totalRecordCount = 0; @@ -107,7 +103,7 @@ namespace AyaNova.DataList //INSERT REMAINING FIELDS FROM TEMPLATE INTO THE RETURN ROWS LIST - foreach (string TemplateField in dataListTableOptions.Columns) + foreach (string TemplateField in dataListTableProcessingOptions.Columns) { //get the AyaObjectFieldDefinition @@ -231,7 +227,7 @@ namespace AyaNova.DataList //BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT Newtonsoft.Json.Linq.JArray ColumnsJSON = null; - ColumnsJSON = DataList.GenerateReturnListColumns(dataListTableOptions.Columns); + ColumnsJSON = DataList.GenerateReturnListColumns(dataListTableProcessingOptions.Columns); return new DataListReturnData(rows, totalRecordCount, ColumnsJSON); }