using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using Core.Entities; using Core.Interfaces; using StackExchange.Redis; namespace Infrastructure.Data { public class BasketRepository : IBasketRepository { private readonly IDatabase _database; public BasketRepository(IConnectionMultiplexer redis) { _database = redis.GetDatabase(); } public async Task DeleteBasketAsysnc(string basketId) { return await _database.KeyDeleteAsync(basketId); } public async Task GetBasketAsync(string basketId) { var data = await _database.StringGetAsync(basketId); return data.IsNullOrEmpty ? null : JsonSerializer.Deserialize(data); } public async Task UpdateBasketAsync(CustomerBasket basket) { var created = await _database.StringSetAsync(basket.Id, JsonSerializer.Serialize(basket), TimeSpan.FromDays(1)); if(!created) return null; return await GetBasketAsync(basket.Id); } } }