This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -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\\"
|
||||||
|
|||||||
@@ -3,100 +3,24 @@ 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
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user