InteractionsIQ.FluentCacheBuilder

Package Description


Keywords
Cache, Wrapper, Core, .NET
License
MIT
Install
Install-Package InteractionsIQ.FluentCacheBuilder -Version 1.0.1

Documentation

Fluent Cache Builder

A cache builder that wraps MemoryCache with a fluent interface for easy building cache entries.

Setup

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        ...

        services.AddMemoryCache();
    }
}

Creating Entries

public class Repository<TEntity>
    where TEntity : class, new()
{
    pulic CacheBuilder CacheBuilder { get; private set; }

    public Repository(CacheBuilder cacheBuilder)
    {
	// Ask for a cacheBuilder instance to be injected
        CacheBuilder = cacheBuilder;
    }

    public async Task<TEntity> FindByKeyFromCacheAsync(object key)
    {
        return await CacheBuilder
	    .ForObjectOfType<TEntity>()
	    .WithKey(key.ToString())
            .ExpiresWithin(TimeSpan.FromMinutes(5))
            .BuildValueFromAsync(async () =>
            {
                return await FindByKeyAsync(key);
            })
            .GetFromCacheAsync();
    }

    public async Task<TEntity> FindByKeyAsync(object key)
    {
	...
    }

}