This commit is contained in:
2020-12-24 22:12:07 +00:00
parent 93db49c5d3
commit eddf7189b9
3 changed files with 7 additions and 83 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
"AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -2,101 +2,25 @@ using Microsoft.Extensions.Logging;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
//Turn a type and ID into a displayable name //Turn a type and ID into a displayable name
//this version uses a direct DataReader for performance in tight loops (search)
//Used by search and eventlog processor //Used by search and eventlog processor
internal static class BizObjectNameFetcherDirect internal static class BizObjectNameFetcherDirect
{ {
internal static string Name(AyaTypeId tid, System.Data.Common.DbCommand cmd)
{
return Name(tid.ObjectType, tid.ObjectId, cmd);
}
//Returns existance status of object type and id specified in database
internal static string Name(AyaType ayaType, long id, System.Data.Common.DbCommand cmd) internal static string Name(AyaType ayaType, long id, System.Data.Common.DbCommand cmd)
{ {
if (ayaType == AyaType.NoType || id == 0)
{
return "-";
}
string TABLE = string.Empty;
string COLUMN = "name";
//CoreBizObject add here BUT ONLY ADD IF AYATYPE NAME DIFFERS FROM TABLE NAME OR NO NAME FIELD AS PRIMARY NAME-LIKE COLUMN
switch (ayaType)
{
//Oddballs only without a NAME column, otherwise let default handle it
case AyaType.OpsNotificationSettings:
return "-";
case AyaType.Global:
return "Global";
case AyaType.Backup:
return "-";
case AyaType.GlobalOps:
return "GlobalOps";
case AyaType.FileAttachment:
TABLE = "afileattachment";
COLUMN = "displayfilename";
break;
case AyaType.DataListView:
TABLE = "adatalistview";
break;
case AyaType.FormCustom:
TABLE = "aformcustom";
COLUMN = "formkey";
break;
case AyaType.WorkOrder:
cmd.CommandText = $"SELECT m.serial FROM aworkorder AS m WHERE m.id = {id} LIMIT 1";
using (var dr = cmd.ExecuteReader())
return dr.Read() ? dr.GetInt64(0).ToString() : "-";
//Not sure what to return here, defaulting to nothing for now
case AyaType.CustomerNote:
case AyaType.WorkOrderItem:
case AyaType.WorkOrderItemExpense:
case AyaType.WorkOrderItemLabor:
case AyaType.WorkOrderItemLoan:
case AyaType.WorkOrderItemPart:
case AyaType.WorkOrderItemPartRequest:
case AyaType.WorkOrderItemScheduledUser:
case AyaType.WorkOrderItemTask:
case AyaType.WorkOrderItemTravel:
case AyaType.WorkOrderItemUnit:
return "-";
default:
TABLE = "a" + ayaType.ToString().ToLowerInvariant();
break;
}
try try
{ {
cmd.CommandText = $"SELECT m.{COLUMN} FROM {TABLE} AS m WHERE m.id = {id} LIMIT 1"; cmd.CommandText = $"select PUBLIC.AYGETNAME({id}, {(int)ayaType}) as m";
// cmd.CommandText = $"SELECT m.{COLUMN} FROM {TABLE} AS m WHERE m.id = {id} LIMIT 1";
using (var dr = cmd.ExecuteReader()) using (var dr = cmd.ExecuteReader())
return dr.Read() ? dr.GetString(0) : "-"; return dr.Read() ? dr.GetString(0) : "-";
} }
catch catch
{ {
((ILogger)AyaNova.Util.ApplicationLogging.CreateLogger("BizObjectNameFetcherDirect")).LogError($"### Error fetching for type {ayaType}"); ((ILogger)AyaNova.Util.ApplicationLogging.CreateLogger("BizObjectNameFetcherDirect")).LogError($"### Error fetching for type {ayaType}");
#if(DEBUG)
throw; throw;
#else
return $"#{ayaType}#";
#endif
} }
} }
/////////////////////////////////////////////////////////////////////
}//eoc }//eoc
}//eons }//eons

View File

@@ -233,9 +233,9 @@ namespace AyaNova.Biz
foreach (AyaTypeId i in OrderedMatchingObjects) foreach (AyaTypeId i in OrderedMatchingObjects)
{ {
SearchResult SR = new SearchResult(); SearchResult SR = new SearchResult();
SR.Name = BizObjectNameFetcherDirect.Name(i.ObjectType,
SR.Name = BizObjectNameFetcherDirect.Name(i, command);//THIS IS CAUSING ALL THE SLOWNESS IN RETURNING SEARCH RESULTS (...much later ??? WTF??) i.ObjectId,
command);
SR.Id = i.ObjectId; SR.Id = i.ObjectId;
SR.Type = i.ObjectType; SR.Type = i.ObjectType;
ReturnObject.SearchResults.Add(SR); ReturnObject.SearchResults.Add(SR);