This commit is contained in:
2020-06-05 19:33:05 +00:00
parent ac3bfb50bf
commit 4e73531145
4 changed files with 52 additions and 112 deletions

View File

@@ -681,67 +681,6 @@ namespace AyaNova.Biz
#region Breaker
// //Class to hold relevant translation data for breaking text
// public class TranslationWordBreakingData
// {
// public bool CJKIndex { get; set; }
// public List<string> StopWords { get; set; }
// public TranslationWordBreakingData()
// {
// CJKIndex = false;
// StopWords = new List<string>();
// }
// }
// private static Dictionary<long, TranslationWordBreakingData> translationWordBreakingDataCache = new Dictionary<long, TranslationWordBreakingData>();
// //called at startup to populate cache
//WAS GOING TO ADD THIS IN RESPONSE TO AN ISSUE WITH EXCEPTION ATTEMPTING TO ADD ALREADY EXISTING DICTIONARY ID 1, BUT IT NEVER HAPPENED AGAIN, SO :SHRUGEMOJI:
//IF IT DOES, MAKE THIS CODE AND POPULATE IT AT SERVER BOOT AND SHOULD BE ADEQUATE
//OR GO NUTS WITH A FULL MEMORY CACHE: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-3.1
// internal static async Task CacheAllTranslationWordBreakingData(){
// //iterate all Translations, cache the word break data
// l = await ct.Translation
// .AsNoTracking()
// .OrderBy(z => z.Name)
// .Select(z => new NameIdItem()
// {
// Id = z.Id,
// Name = z.Name
// }).ToListAsync();
// TranslationWordBreakingDataCache.Add(TranslationId, await GetTranslationSearchDataAsync(TranslationId));
// }
// internal static async Task<TranslationWordBreakingData> GetTranslationSearchDataAsync(long translationId, AyContext ct = null)
// {
// TranslationWordBreakingData LSD = new TranslationWordBreakingData();
// if (ct == null)
// ct = ServiceProviderProvider.DBContext;
// //Get stopwords
// //Validate translation id, if not right then use default instead
// var Param = new List<string>();
// translationId = await TranslationBiz.ReturnSpecifiedTranslationIdIfExistsOrDefaultTranslationId(translationId, ct);
// Param.Add("StopWords1");
// Param.Add("StopWords2");
// Param.Add("StopWords3");
// Param.Add("StopWords4");
// Param.Add("StopWords5");
// Param.Add("StopWords6");
// Param.Add("StopWords7");
// var Stops = await TranslationBiz.GetSubsetStaticAsync(Param, translationId);
// foreach (KeyValuePair<string, string> kvp in Stops)
// {
// //Each stopwords translation key is a space delimited list of words and in the case of an empty local string (i.e. StopWords7) it's value is a single question mark
// if (kvp.Value != "?")
// {
// LSD.StopWords.AddRange(kvp.Value.Split(" "));
// }
// }
// LSD.CJKIndex = await TranslationBiz.GetCJKIndexAsync(translationId, ct);
// return LSD;
// }
public enum TokenTypes
{ Nothing, Separator, CJK, Latin };

View File

@@ -31,30 +31,32 @@ namespace AyaNova.Biz
internal static async Task<TranslationWordBreakingData> GetTranslationSearchDataAsync(long translationId)
{
TranslationWordBreakingData LSD = new TranslationWordBreakingData();
AyContext ct = ServiceProviderProvider.DBContext;
//Get stopwords
//Validate translation id, if not right then use default instead
var Param = new List<string>();
translationId = await TranslationBiz.ReturnSpecifiedTranslationIdIfExistsOrDefaultTranslationId(translationId, ct);
Param.Add("StopWords1");
Param.Add("StopWords2");
Param.Add("StopWords3");
Param.Add("StopWords4");
Param.Add("StopWords5");
Param.Add("StopWords6");
Param.Add("StopWords7");
var Stops = await TranslationBiz.GetSubsetStaticAsync(Param, translationId);
foreach (KeyValuePair<string, string> kvp in Stops)
using (AyContext ct = ServiceProviderProvider.DBContext)
{
//Each stopwords translation key is a space delimited list of words and in the case of an empty local string (i.e. StopWords7) it's value is a single question mark
if (kvp.Value != "?")
{
LSD.StopWords.AddRange(kvp.Value.Split(" "));
}
}
//Get stopwords
//Validate translation id, if not right then use default instead
var Param = new List<string>();
translationId = await TranslationBiz.ReturnSpecifiedTranslationIdIfExistsOrDefaultTranslationId(translationId, ct);
Param.Add("StopWords1");
Param.Add("StopWords2");
Param.Add("StopWords3");
Param.Add("StopWords4");
Param.Add("StopWords5");
Param.Add("StopWords6");
Param.Add("StopWords7");
var Stops = await TranslationBiz.GetSubsetStaticAsync(Param, translationId);
LSD.CJKIndex = await TranslationBiz.GetCJKIndexAsync(translationId, ct);
foreach (KeyValuePair<string, string> kvp in Stops)
{
//Each stopwords translation key is a space delimited list of words and in the case of an empty local string (i.e. StopWords7) it's value is a single question mark
if (kvp.Value != "?")
{
LSD.StopWords.AddRange(kvp.Value.Split(" "));
}
}
LSD.CJKIndex = await TranslationBiz.GetCJKIndexAsync(translationId, ct);
}
return LSD;
}

View File

@@ -164,20 +164,19 @@ namespace AyaNova.Biz
#if (DEBUG)
TrackRequestedKey(param);
#endif
AyContext ct = ServiceProviderProvider.DBContext;
if (!await ct.Translation.AnyAsync(e => e.Id == translationId))
translationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
var ret = await ct.TranslationItem.Where(z => z.TranslationId == translationId && param.Contains(z.Key)).AsNoTracking().ToDictionaryAsync(z => z.Key, z => z.Display);
return ret;
using (AyContext ct = ServiceProviderProvider.DBContext)
{
if (!await ct.Translation.AnyAsync(e => e.Id == translationId))
translationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
var ret = await ct.TranslationItem.Where(z => z.TranslationId == translationId && param.Contains(z.Key)).AsNoTracking().ToDictionaryAsync(z => z.Key, z => z.Display);
return ret;
}
}
//Get the CJKIndex value for the translation specified
internal static async Task<bool> GetCJKIndexAsync(long translationId, AyContext ct = null)
internal static async Task<bool> GetCJKIndexAsync(long translationId, AyContext ct)
{
if (ct == null)
ct = ServiceProviderProvider.DBContext;
var ret = await ct.Translation.Where(z => z.Id == translationId).AsNoTracking().Select(z => z.CjkIndex).SingleOrDefaultAsync();
return ret;
}
@@ -195,15 +194,15 @@ namespace AyaNova.Biz
#if (DEBUG)
TrackRequestedKey(key);
#endif
AyContext ct = ServiceProviderProvider.DBContext;
return await ct.TranslationItem.Where(z => z.TranslationId == ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID && z.Key == key).Select(z => z.Display).AsNoTracking().FirstOrDefaultAsync();
using (AyContext ct = ServiceProviderProvider.DBContext)
return await ct.TranslationItem.Where(z => z.TranslationId == ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID && z.Key == key).Select(z => z.Display).AsNoTracking().FirstOrDefaultAsync();
}
//Get all stock keys that are valid (used for key coverage reporting)
internal static async Task<List<string>> GetKeyListAsync()
{
AyContext ct = ServiceProviderProvider.DBContext;
return await ct.TranslationItem.Where(z => z.TranslationId == 1).OrderBy(z => z.Key).Select(z => z.Key).AsNoTracking().ToListAsync();
using (AyContext ct = ServiceProviderProvider.DBContext)
return await ct.TranslationItem.Where(z => z.TranslationId == 1).OrderBy(z => z.Key).Select(z => z.Key).AsNoTracking().ToListAsync();
}
@@ -392,15 +391,14 @@ namespace AyaNova.Biz
return v.Id;
}
public static async Task<long> TranslationNameToIdStaticAsync(string translationName, AyContext ct = null)
public static async Task<long> TranslationNameToIdStaticAsync(string translationName)
{
if (ct == null)
using (AyContext ct = ServiceProviderProvider.DBContext)
{
ct = ServiceProviderProvider.DBContext;
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(z => z.Name == translationName);
if (v == null) return ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
return v.Id;
}
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(z => z.Name == translationName);
if (v == null) return ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
return v.Id;
}
public async Task<bool> TranslationExistsAsync(string translationName)

View File

@@ -31,12 +31,13 @@ namespace AyaNova.Biz
//This is where active tech license consumers are accounted for
internal static async Task<long> ActiveCountAsync()
{
var ct = ServiceProviderProvider.DBContext;
var ret = await ct.User.Where(z => z.Active == true && (
z.UserType == UserType.Service ||
z.UserType == UserType.ServiceContractor)).LongCountAsync();
return ret;
using (AyContext ct = ServiceProviderProvider.DBContext)
{
var ret = await ct.User.AsNoTracking().Where(z => z.Active == true && (
z.UserType == UserType.Service ||
z.UserType == UserType.ServiceContractor)).LongCountAsync();
return ret;
}
}
internal static UserBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null)
@@ -593,14 +594,14 @@ namespace AyaNova.Biz
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
else
idList = await ct.Widget.Select(z => z.Id).ToListAsync();
bool SaveIt = false;
bool SaveIt = false;
foreach (long id in idList)
{
try
{
SaveIt = false;
ClearErrors();
var o = await GetAsync(id, false);
SaveIt = false;
ClearErrors();
var o = await GetAsync(id, false);
switch (job.SubType)
{
case JobSubType.TagAddAny: