192 lines
7.5 KiB
C#
192 lines
7.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Data.Models;
|
|||
|
using SharedLibraryCore.Dtos;
|
|||
|
using SharedLibraryCore.QueryHelper;
|
|||
|
|
|||
|
namespace SharedLibraryCore.Interfaces;
|
|||
|
|
|||
|
public interface IMetaServiceV2
|
|||
|
{
|
|||
|
#region PER_CLIENT
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// adds or updates meta key and value to the database as simple string
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of meta data</param>
|
|||
|
/// <param name="metaValue">value of the meta data</param>
|
|||
|
/// <param name="clientId">id of the client to save the meta for</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task SetPersistentMeta(string metaKey, string metaValue, int clientId, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// add or update meta key and value to the database as serialized object type
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="metaValue"></param>
|
|||
|
/// <param name="clientId"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <typeparam name="T">type of object being serialized</typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
Task SetPersistentMetaValue<T>(string metaKey, T metaValue, int clientId, CancellationToken token = default)
|
|||
|
where T : class;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Sets meta key to a linked lookup key and id
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">Key for the client meta</param>
|
|||
|
/// <param name="lookupKey">Key of the global lookup meta</param>
|
|||
|
/// <param name="lookupId">Id in the list of lookup values</param>
|
|||
|
/// <param name="clientId">id of the client</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task SetPersistentMetaForLookupKey(string metaKey, string lookupKey, int lookupId, int clientId,
|
|||
|
CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// increments meta value and persists to the database
|
|||
|
/// <remarks>if the meta value does not already exist it will be set to the increment amount</remarks>
|
|||
|
/// <remarks>the assumption is made that the existing value is <see cref="int"/></remarks>
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of meta data</param>
|
|||
|
/// <param name="incrementAmount">value to increment by</param>
|
|||
|
/// <param name="clientId">id of the client to save the meta for</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task IncrementPersistentMeta(string metaKey, int incrementAmount, int clientId,
|
|||
|
CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// decrements meta value and persists to the database
|
|||
|
/// <remarks>if the meta value does not already exist it will be set to the decrement amount</remarks>
|
|||
|
/// <remarks>the assumption is made that the existing value is <see cref="int"/></remarks>
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of meta data</param>
|
|||
|
/// <param name="decrementAmount">value to increment by</param>
|
|||
|
/// <param name="clientId">id of the client to save the meta for</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task DecrementPersistentMeta(string metaKey, int decrementAmount, int clientId,
|
|||
|
CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves meta entry
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="clientId"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task<EFMeta> GetPersistentMeta(string metaKey, int clientId, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves meta value as deserialized object
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="clientId"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <typeparam name="T">object type to deserialize into</typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
Task<T> GetPersistentMetaValue<T>(string metaKey, int clientId, CancellationToken token = default)
|
|||
|
where T : class;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves meta entry by with associated lookup value as string
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="lookupKey"></param>
|
|||
|
/// <param name="clientId"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task<EFMeta> GetPersistentMetaByLookup(string metaKey, string lookupKey, int clientId,
|
|||
|
CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// removes meta key with given value
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of meta data</param>
|
|||
|
/// <param name="clientId">client to delete the meta for</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task RemovePersistentMeta(string metaKey, int clientId, CancellationToken token = default);
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region GLOBAL
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// adds or updates meta key and value to the database
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of meta data</param>
|
|||
|
/// <param name="metaValue">value of the meta data</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task SetPersistentMeta(string metaKey, string metaValue, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// serializes and sets (create or update) meta key and value
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="metaValue"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
Task SetPersistentMetaValue<T>(string metaKey, T metaValue, CancellationToken token = default) where T : class;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// removes meta key with given value
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key of the meta data</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task RemovePersistentMeta(string metaKey, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves collection of meta for given key
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">key to retrieve values for</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task<EFMeta> GetPersistentMeta(string metaKey, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// returns value of meta key if it exists
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey"></param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
Task<T> GetPersistentMetaValue<T>(string metaKey, CancellationToken token = default) where T : class;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// adds a meta task to the runtime meta list
|
|||
|
/// </summary>
|
|||
|
/// <param name="metaKey">type of meta</param>
|
|||
|
/// <param name="metaAction">action to perform</param>
|
|||
|
void AddRuntimeMeta<T, TReturn>(MetaType metaKey,
|
|||
|
Func<T, CancellationToken, Task<IEnumerable<TReturn>>> metaAction)
|
|||
|
where TReturn : IClientMeta where T : PaginationRequest;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves all the runtime meta information for given client idea
|
|||
|
/// </summary>
|
|||
|
/// <param name="request">request information</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task<IEnumerable<IClientMeta>> GetRuntimeMeta(ClientPaginationRequest request, CancellationToken token = default);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// retrieves all the runtime of provided type
|
|||
|
/// </summary>
|
|||
|
/// <param name="request">>request information</param>
|
|||
|
/// <param name="metaType">type of meta to retreive</param>
|
|||
|
/// <param name="token"></param>
|
|||
|
/// <returns></returns>
|
|||
|
Task<IEnumerable<T>> GetRuntimeMeta<T>(ClientPaginationRequest request, MetaType metaType, CancellationToken token = default)
|
|||
|
where T : IClientMeta;
|
|||
|
}
|