Sky.Net/Infrastructure/Data/BasketRepository.cs

39 lines
1.2 KiB
C#
Raw Normal View History

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
}
}
}