Exemple #1
0
 public IndexLoaderBackgroundService(IConfiguration config,
                                     ILogger <IndexLoaderBackgroundService> logger,
                                     IIndexHolder indexHolder,
                                     IndexHealthCheck indexHealthCheck)
 {
     this.config           = config;
     this.logger           = logger;
     this.indexHolder      = indexHolder;
     this.indexHealthCheck = indexHealthCheck;
 }
Exemple #2
0
        public static async Task <Word> GetWord(
            IIndexHolder _indexHolder,
            AdminContext _dbContext,
            ZhConverter zhConverter,
            DocRef docRef,
            Mode mode = Mode.Full)
        {
            var maybeYngdiengDocument = _indexHolder.GetIndex().YngdiengDocuments
                                        .SingleOrDefault(yDoc => yDoc.DocId == DocRefs.Encode(docRef));
            var maybeWordId = string.IsNullOrEmpty(docRef.ZingzeuId)
                ? (int?)null : int.Parse(docRef.ZingzeuId, NumberStyles.HexNumber);
            var maybeWord = maybeWordId == null
                ? null
                : await _dbContext.Words
                            .Where(w => w.WordId == maybeWordId)
                            .Include(w => w.PreferredSandhiAudio)
                            .SingleOrDefaultAsync();

            if (maybeYngdiengDocument == null && maybeWord == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound, "Not found."));
            }
            var extensions = await _dbContext.Extensions.Where(e => e.WordId == maybeWordId).ToListAsync();

            var prons = await _dbContext.Prons.Where(p => p.WordId == maybeWordId).ToListAsync();

            var hanzi            = zhConverter.tH(await GetHanzi(_dbContext, maybeYngdiengDocument, maybeWordId));
            var recommendedProns = mode == Mode.Snippet
                ? PronChooser.GetSnippetPronunciations(maybeYngdiengDocument, prons, maybeWord?.PreferredSandhiAudio)
                : PronChooser.GetRecommendedPronunciations(maybeYngdiengDocument, prons, maybeWord?.PreferredSandhiAudio);
            var explanations = mode == Mode.Snippet
                ? Enumerable.Empty <RichTextNode>()
                : GetExplanations(zhConverter, hanzi, maybeYngdiengDocument, extensions);
            var audioCards = mode == Mode.Snippet ? Enumerable.Empty <Word.Types.AudioCard>()
                : await GetAudioCards(_dbContext, recommendedProns, maybeWordId);

            var wordLists = mode == Mode.Full && maybeWordId.HasValue
                ? await Queries.QueryWordListsByWordId(_dbContext, maybeWordId.Value).Select(wl => Renderers.ToWordList(wl)).ToListAsync()
                : Enumerable.Empty <WordList>();

            return(new Word
            {
                Name = ResourceNames.ToWordName(docRef),
                Hanzi = hanzi,
                Pronunciations = { recommendedProns },
                Explanation = { explanations },
                Snippet = zhConverter.tH(GetSnippet(maybeYngdiengDocument, extensions)),
                AudioCards = { audioCards },
                WordLists =
                {
                    wordLists
                }
            });
        }
Exemple #3
0
 public YngdiengService(
     ILogger <YngdiengService> logger,
     IIndexHolder indexHolder,
     ISearchCache cache,
     YngdiengOpenCcClient openCc)
 {
     _logger      = logger;
     _indexHolder = indexHolder;
     _cache       = cache;
     _openCc      = openCc;
 }
 public FrontendService(
     ILogger <FrontendService> logger,
     IIndexHolder indexHolder,
     AdminContext dbContext,
     YngdiengOpenCcClient openCc)
 {
     _logger      = logger;
     _indexHolder = indexHolder;
     _dbContext   = dbContext;
     _openCc      = openCc;
 }
Exemple #5
0
 public YngdiengService(ILogger <YngdiengService> logger, IIndexHolder indexHolder, ISearchCache cache)
 {
     _logger      = logger;
     _indexHolder = indexHolder;
     _cache       = cache;
 }