Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public static Sender PropagateTenant(this Sender next, IServiceProvider sp)
async Task Sender(ISenderContext context, PID target, MessageEnvelope envelope)
{
var tenantAccessor = sp.GetRequiredService<ITenantAccessor>();
if (tenantAccessor.Tenant != null) envelope.WithHeader(HeaderNames.TenantId, tenantAccessor.Tenant.Id);
envelope.WithHeader(HeaderNames.TenantId, tenantAccessor.TenantId);
await next(context, target, envelope);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -525,8 +525,7 @@ private void ApplyTenantFilter(ParameterizedQuery query, bool tenantAgnostic = f
if (tenantAgnostic)
return;

var tenant = tenantAccessor.Tenant;
var tenantId = tenant?.Id;
var tenantId = tenantAccessor.TenantId;
query.Is(nameof(Record.TenantId), (object?)tenantId ?? DBNull.Value);
}

Expand All @@ -535,8 +534,7 @@ private void SetTenantId(T record)
if (record is not Record recordWithTenant)
return;

var tenant = tenantAccessor.Tenant;
var tenantId = tenant?.Id;
var tenantId = tenantAccessor.TenantId;
recordWithTenant.TenantId = tenantId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -435,8 +435,7 @@ private IQueryable<TDocument> GetQueryableCollection(bool tenantAgnostic = false

if (typeof(Entity).IsAssignableFrom(typeof(TDocument)))
{
var tenant = tenantAccessor.Tenant;
var tenantId = tenant?.Id.EmptyToNull();
var tenantId = tenantAccessor.TenantId;
queryable = queryable.Where(x => (x as Entity)!.TenantId == tenantId);
}

Expand All @@ -445,22 +444,20 @@ private IQueryable<TDocument> GetQueryableCollection(bool tenantAgnostic = false

private void ApplyTenantId(TDocument document)
{
var tenant = tenantAccessor.Tenant;
var tenantId = tenant?.Id;
var tenantId = tenantAccessor.TenantId;

if (document is Entity tenantDocument)
tenantDocument.TenantId = tenantId.EmptyToNull();
tenantDocument.TenantId = tenantId;
}

private void ApplyTenantId(IEnumerable<TDocument> documents)
{
var tenant = tenantAccessor.Tenant;
var tenantId = tenant?.Id;
var tenantId = tenantAccessor.TenantId;

foreach (var document in documents)
{
if (document is Entity tenantDocument)
tenantDocument.TenantId = tenantId.EmptyToNull();
tenantDocument.TenantId = tenantId;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public Task<bool> InstanceExistsAsync(CancellationToken cancellationToken = defa
private IDictionary<string, string> CreateHeaders()
{
var headers = new Dictionary<string, string>();
if (_tenantAccessor.Tenant != null) headers[HeaderNames.TenantId] = _tenantAccessor.Tenant.Id;
headers[HeaderNames.TenantId] = _tenantAccessor.TenantId;
return headers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ public class ExecuteBackgroundActivityJob(IBackgroundActivityInvoker backgroundA
/// <summary>
/// Executes the job.
/// </summary>
public async Task ExecuteAsync(ScheduledBackgroundActivity scheduledBackgroundActivity, string? tenantId, CancellationToken cancellationToken = default)
public async Task ExecuteAsync(ScheduledBackgroundActivity scheduledBackgroundActivity, string tenantId, CancellationToken cancellationToken = default)
{
var tenant = tenantId != null ? await tenantFinder.FindByIdAsync(tenantId, cancellationToken) : null;
var tenant = await tenantFinder.FindByIdAsync(tenantId, cancellationToken);
using var scope = tenantAccessor.PushContext(tenant);
await backgroundActivityInvoker.ExecuteAsync(scheduledBackgroundActivity, cancellationToken);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ public class ResumeWorkflowJob(IWorkflowRuntime workflowRuntime, ITenantFinder t
/// <param name="cancellationToken">The cancellation token.</param>
// ReSharper disable once UnusedParameter.Global
[AutomaticRetry(OnAttemptsExceeded = AttemptsExceededAction.Fail)]
public async Task ExecuteAsync(string taskName, ScheduleExistingWorkflowInstanceRequest request, string? tenantId, CancellationToken cancellationToken)
public async Task ExecuteAsync(string taskName, ScheduleExistingWorkflowInstanceRequest request, string tenantId, CancellationToken cancellationToken)
{
var tenant = tenantId != null ? await tenantFinder.FindByIdAsync(tenantId, cancellationToken) : null;
var tenant = await tenantFinder.FindByIdAsync(tenantId, cancellationToken);
using var scope = tenantAccessor.PushContext(tenant);
var client = await workflowRuntime.CreateClientAsync(request.WorkflowInstanceId, cancellationToken);
var runRequest = new RunWorkflowInstanceRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ public class RunWorkflowJob(IWorkflowRuntime workflowRuntime, ITenantFinder tena
/// <param name="cancellationToken">The cancellation token.</param>
// ReSharper disable once UnusedParameter.Global
[AutomaticRetry(OnAttemptsExceeded = AttemptsExceededAction.Fail)]
public async Task ExecuteAsync(string taskName, ScheduleNewWorkflowInstanceRequest request, string? tenantId, CancellationToken cancellationToken)
public async Task ExecuteAsync(string taskName, ScheduleNewWorkflowInstanceRequest request, string tenantId, CancellationToken cancellationToken)
{
var tenant = tenantId != null ? await tenantFinder.FindByIdAsync(tenantId, cancellationToken) : null;
var tenant = await tenantFinder.FindByIdAsync(tenantId, cancellationToken);
using var scope = tenantAccessor.PushContext(tenant);
var client = await workflowRuntime.CreateClientAsync(cancellationToken);
var createAndRunRequest = new CreateAndRunWorkflowInstanceRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class HangfireBackgroundActivityScheduler(IBackgroundJobClient background
{
public Task<string> CreateAsync(ScheduledBackgroundActivity scheduledBackgroundActivity, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
var jobId = backgroundJobClient.Create<ExecuteBackgroundActivityJob>(x => x.ExecuteAsync(scheduledBackgroundActivity, tenantId, CancellationToken.None), new PendingState());
return Task.FromResult(jobId);
}
Expand All @@ -30,7 +30,7 @@ public Task ScheduleAsync(string jobId, CancellationToken cancellationToken = de
/// <inheritdoc />
public Task<string> ScheduleAsync(ScheduledBackgroundActivity scheduledBackgroundActivity, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
var jobId = backgroundJobClient.Enqueue<ExecuteBackgroundActivityJob>(x => x.ExecuteAsync(scheduledBackgroundActivity, tenantId, CancellationToken.None));
return Task.FromResult(jobId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ public class HangfireWorkflowScheduler(
/// <inheritdoc />
public ValueTask ScheduleAtAsync(string taskName, ScheduleNewWorkflowInstanceRequest request, DateTimeOffset at, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
backgroundJobClient.Schedule<RunWorkflowJob>(job => job.ExecuteAsync(taskName, request, tenantId, CancellationToken.None), at);
return ValueTask.CompletedTask;
}

/// <inheritdoc />
public ValueTask ScheduleAtAsync(string taskName, ScheduleExistingWorkflowInstanceRequest request, DateTimeOffset at, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
backgroundJobClient.Schedule<ResumeWorkflowJob>(job => job.ExecuteAsync(taskName, request, tenantId, CancellationToken.None), at);
return ValueTask.CompletedTask;
}
Expand All @@ -46,15 +46,15 @@ public async ValueTask ScheduleRecurringAsync(string taskName, ScheduleExistingW
/// <inheritdoc />
public ValueTask ScheduleCronAsync(string taskName, ScheduleNewWorkflowInstanceRequest request, string cronExpression, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
recurringJobManager.AddOrUpdate<RunWorkflowJob>(taskName, job => job.ExecuteAsync(taskName, request, tenantId, CancellationToken.None), cronExpression);
return ValueTask.CompletedTask;
}

/// <inheritdoc />
public ValueTask ScheduleCronAsync(string taskName, ScheduleExistingWorkflowInstanceRequest request, string cronExpression, CancellationToken cancellationToken = default)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
recurringJobManager.AddOrUpdate<ResumeWorkflowJob>(taskName, job => job.ExecuteAsync(taskName, request, tenantId, CancellationToken.None), cronExpression);
return ValueTask.CompletedTask;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public JobKey GetJobKey<TJob>() where TJob : IJob

public string GetGroupName()
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;
return string.IsNullOrWhiteSpace(tenantId) ? "Default" : tenantId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ private async Task ScheduleJobAsync(QuartzIScheduler scheduler, ITrigger trigger
private JobDataMap CreateJobDataMap(ScheduleNewWorkflowInstanceRequest request)
{
return new JobDataMap()
.AddIfNotEmpty("TenantId", tenantAccessor.Tenant?.Id)
.AddIfNotEmpty("TenantId", tenantAccessor.TenantId)
.AddIfNotEmpty(nameof(ScheduleNewWorkflowInstanceRequest.CorrelationId), request.CorrelationId)
.AddIfNotEmpty(nameof(ScheduleNewWorkflowInstanceRequest.WorkflowDefinitionHandle.DefinitionVersionId), request.WorkflowDefinitionHandle.DefinitionVersionId)
.AddIfNotEmpty(nameof(ScheduleNewWorkflowInstanceRequest.TriggerActivityId), request.TriggerActivityId)
Expand All @@ -145,7 +145,7 @@ private JobDataMap CreateJobDataMap(ScheduleExistingWorkflowInstanceRequest requ
var serializedActivityHandle = request.ActivityHandle != null ? jsonSerializer.Serialize(request.ActivityHandle) : null;

return new JobDataMap()
.AddIfNotEmpty("TenantId", tenantAccessor.Tenant?.Id)
.AddIfNotEmpty("TenantId", tenantAccessor.TenantId)
.AddIfNotEmpty(nameof(ScheduleExistingWorkflowInstanceRequest.WorkflowInstanceId), request.WorkflowInstanceId)
.AddIfNotEmpty(nameof(ScheduleExistingWorkflowInstanceRequest.Input), request.Input)
.AddIfNotEmpty(nameof(ScheduleExistingWorkflowInstanceRequest.Properties), request.Properties)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@ public void Probe(ProbeContext context)

public async Task Send(PublishContext context, IPipe<PublishContext> next)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;

if (!string.IsNullOrEmpty(tenantId))
context.Headers.Set(HeaderNames.TenantId, tenantId);
context.Headers.Set(HeaderNames.TenantId, tenantId);

await next.Send(context);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@ public void Probe(ProbeContext context)

public async Task Send(SendContext context, IPipe<SendContext> next)
{
var tenantId = tenantAccessor.Tenant?.Id;
var tenantId = tenantAccessor.TenantId;

if (!string.IsNullOrEmpty(tenantId))
context.Headers.Set(HeaderNames.TenantId, tenantId);
context.Headers.Set(HeaderNames.TenantId, tenantId);

await next.Send(context);
}
Expand Down