2022-05-17 14:04:42 -07:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
2022-05-17 16:29:34 -07:00
|
|
|
using System.Text.Json;
|
2022-05-17 14:04:42 -07:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
using Core.Entities;
|
|
|
|
using Core.Interfaces;
|
2022-05-17 16:29:34 -07:00
|
|
|
using StackExchange.Redis;
|
2022-05-17 14:04:42 -07:00
|
|
|
|
|
|
|
namespace Infrastructure.Data
|
|
|
|
{
|
|
|
|
public class BasketRepository : IBasketRepository
|
|
|
|
{
|
2022-05-17 16:29:34 -07:00
|
|
|
|
|
|
|
private readonly IDatabase _database;
|
|
|
|
public BasketRepository(IConnectionMultiplexer redis)
|
2022-05-17 14:04:42 -07:00
|
|
|
{
|
2022-05-17 16:29:34 -07:00
|
|
|
_database = redis.GetDatabase();
|
2022-05-17 14:04:42 -07:00
|
|
|
}
|
|
|
|
|
2022-05-17 16:29:34 -07:00
|
|
|
public async Task<bool> DeleteBasketAsysnc(string basketId)
|
2022-05-17 14:04:42 -07:00
|
|
|
{
|
2022-05-17 16:29:34 -07:00
|
|
|
return await _database.KeyDeleteAsync(basketId);
|
2022-05-17 14:04:42 -07:00
|
|
|
}
|
|
|
|
|
2022-05-17 16:29:34 -07:00
|
|
|
public async Task<CustomerBasket> GetBasketAsync(string basketId)
|
2022-05-17 14:04:42 -07:00
|
|
|
{
|
2022-05-17 16:29:34 -07:00
|
|
|
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);
|
2022-05-17 14:04:42 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|