public async Task <AliasUpdateResult> FillAsync(BkTag[] tags)
    {
        var re = new AliasUpdateResult
        {
            TextAliasType = TextAliasType,
        };

        var updated  = false;
        var tagTexts = tags.Select(x => x.Tag).ToArray();
        var tagAlias = await GetAliasAsync(tagTexts);

        foreach (var tag in tags)
        {
            if (tagAlias.TryGetValue(tag.Tag, out var alias))
            {
                tag.TagAlias ??= new Dictionary <TextAliasType, TextAlias>();
                tag.TagAlias[TextAliasType] = new TextAlias
                {
                    Alias           = alias,
                    LastUpdatedTime = _clock.UtcNow,
                    TextAliasType   = TextAliasType
                };
                updated = true;
            }
        }

        re.IsOk = updated;
        return(re);
    }
    public async Task <AliasUpdateResult> FillAsync(Bk[] bks)
    {
        var re = new AliasUpdateResult
        {
            TextAliasType = TextAliasType,
        };

        var titles         = bks.Select(x => x.Title).ToArray();
        var titleAliasDict = await GetAliasAsync(titles);

        var updated = false;

        foreach (var bk in bks)
        {
            if (titleAliasDict.TryGetValue(bk.Title, out var newAliasText))
            {
                var alias = new TextAlias
                {
                    TextAliasType   = TextAliasType,
                    LastUpdatedTime = _clock.UtcNow,
                    Alias           = newAliasText
                };
                bk.TitleAlias ??= new();
                bk.TitleAlias[TextAliasType] = alias;
                updated = true;
            }
            else
            {
                _logger.LogDebug("There is not found alias from provider for {Title}", bk.Title);
            }
        }

        re.IsOk = updated;

        return(re);
    }