//using Atomx.Common.Entities;

//namespace Atomx.Data.CacheServices
//{
//    public partial interface ICacheService
//    {
//        /// <summary>
//        /// 通过数据对象实体ID和语言，获取或更新本地化数据
//        /// </summary>
//        /// <param name="entityId"></param>
//        /// <param name="language"></param>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        Task<List<LocalizedProperty>> GetLocalizedProperty(long entityId, int language, List<LocalizedProperty>? data = null);

//        /// <summary>
//        /// 通过数据对象实体ID获取本地化数据
//        /// </summary>
//        /// <param name="entityId"></param>
//        /// <returns></returns>
//        Task<List<LocalizedProperty>> GetLocalizedPropertyList(long entityId);
//    }
//    public partial class CacheService : ICacheService
//    {
//        /// <summary>
//        /// 通过数据对象实体ID和语言，获取或更新本地化数据
//        /// </summary>
//        /// <param name="entityId"></param>
//        /// <param name="language"></param>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        public async Task<List<LocalizedProperty>> GetLocalizedProperty(long entityId, int language, List<LocalizedProperty>? data = null)
//        {
//            var cacheData = await GetLocalizedPropertyList(entityId);
//            if (data != null)
//            {
//                var list = cacheData.Where(p => p.LanguageId == language).ToList();
//                if (list.Any())
//                {
//                    cacheData.RemoveAll(p => p.LanguageId == language);
//                }
//                cacheData.AddRange(data);
//                await SetCacheAsync($"{CacheKeys.LocalizedPropertyPrefix}{entityId}", cacheData);
//                return data;
//            }
//            return cacheData.Where(p => p.LanguageId == language).ToList();

//        }

//        /// <summary>
//        /// 通过数据对象实体ID获取本地化数据
//        /// </summary>
//        /// <param name="entityId"></param>
//        /// <returns></returns>
//        public async Task<List<LocalizedProperty>> GetLocalizedPropertyList(long entityId)
//        {
//            var cacheData = await GetCacheAsync<List<LocalizedProperty>>($"{CacheKeys.LocalizedPropertyPrefix}{entityId}");
//            if(cacheData == null)
//            {
//                cacheData = _dbContext.LocalizedProperties.Where(p=>p.EntityId == entityId).ToList();
//                if(cacheData == null)
//                {
//                    await SetCacheAsync($"{CacheKeys.LocalizedPropertyPrefix}{entityId}", cacheData);
//                }
//            }
//            return cacheData;
//        }
//    }
//}
