Ejemplo n.º 1
0
        public async Task UpdateEntriesAsync()
        {
            await EnsureInitializedAsync();

            // Update the cache with a new state and then refresh entries as it would be done on a next request.
            await AutorouteStateManager.UpdateAsync(new AutorouteStateDocument(), afterUpdateAsync : RefreshEntriesAsync);
        }
Ejemplo n.º 2
0
        protected virtual async Task InitializeEntriesAsync()
        {
            if (_initialized)
            {
                return;
            }

            await _semaphore.WaitAsync();

            try
            {
                if (!_initialized)
                {
                    var state = await AutorouteStateManager.GetOrCreateImmutableAsync();

                    var indexes = await Session.QueryIndex <AutoroutePartIndex>(i => i.Published && i.Path != null).ListAsync();

                    var entries = indexes.Select(i => new AutorouteEntry(i.ContentItemId, i.Path, i.ContainedContentItemId, i.JsonPath));

                    AddEntries(entries);

                    _lastIndexId     = indexes.LastOrDefault()?.Id ?? 0;
                    _stateIdentifier = state.Identifier;

                    _initialized = true;
                }
            }
            finally
            {
                _semaphore.Release();
            }
        }
Ejemplo n.º 3
0
        private async Task EnsureInitializedAsync()
        {
            if (!_initialized)
            {
                await InitializeEntriesAsync();
            }
            else
            {
                var state = await AutorouteStateManager.GetOrCreateImmutableAsync();

                if (_stateIdentifier != state.Identifier)
                {
                    await RefreshEntriesAsync(state);
                }
            }
        }