using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
namespace Deal.Infrastructure.Data;
///
/// Контекст тенанта на AsyncLocal: пробрасывается через весь запрос.
///
public sealed class TenantContext : ITenantContext
{
private static readonly AsyncLocal Current = new();
public TenantId? TenantId => Current.Value;
public bool HasTenant => Current.Value is not null;
public string? SchemaName => Current.Value?.SchemaName;
///
public void SetTenant(TenantId tenantId) => Current.Value = tenantId;
///
public void Reset() => Current.Value = null;
}