Sky.Net/Infrastructure/Data/BasketRepository.cs
2022-05-17 16:29:34 -07:00

39 lines
1.2 KiB
C#

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<bool> DeleteBasketAsysnc(string basketId)
{
return await _database.KeyDeleteAsync(basketId);
}
public async Task<CustomerBasket> GetBasketAsync(string basketId)
{
var data = await _database.StringGetAsync(basketId);
return data.IsNullOrEmpty ? null : JsonSerializer.Deserialize<CustomerBasket>(data);
}
public async Task<CustomerBasket> 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);
}
}
}