兼容win7版应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.5 KiB

using AIK.Models;
using AIK.Models.ApiModels;
using AIK.Models.SQLiteModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIK.Service.IService
{
public interface IDataCacheService
{
Task<T> GetOrCreateAsync<T>(string key, Func<Task<T>> dataFetchFunc, TimeSpan expiry) where T : class;
Task<T> GetAsync<T>(string key) where T : class;
Task SetAsync<T>(string key, T data, TimeSpan expiry) where T : class;
Task<bool> ExistsAsync(string key);
Task RemoveAsync(string key);
Task ClearExpiredAsync();
Task ClearAllAsync();
Task<IEnumerable<CacheItem>> GetCacheStatsAsync();
Task<long> GetCacheSizeAsync();
#region 钥匙模型缓存专用
Task<List<VehModelClass>> GetSplitVehModelDataAsync(string cacheKey);
Task SetSplitVehModelDataAsync(string cacheKey, VehModelClass vehModel, TimeSpan expiry);
Task DeleteSplitVehModelDataAsync(string cacheKey);
Task ClearSplitCacheExpiredAsync();
#endregion
#region 用户Token缓存专用
Task StoreUserTokenAsync(string token, TimeSpan? expiry = null);
Task<bool> IsUserTokenValidAsync(string token);
Task ClearUserTokenAsync();
Task ClearExpiredUserTokensAsync();
Task<string?> GetLatestUserTokenAsync();
Task<bool> StoreUserInfoAsync(UserModel user);
Task ClearUserInfoAsync();
Task<UserModel?> GetUserInfoAsync();
#endregion
}
}