refactor(architecture): harden module boundaries
Some checks failed
ci / release-gate (push) Has been cancelled
Some checks failed
ci / release-gate (push) Has been cancelled
This commit is contained in:
@@ -10,7 +10,7 @@ using Tiku.Infrastructure.Persistence;
|
||||
namespace Tiku.Infrastructure.QuestionBanks;
|
||||
|
||||
public sealed class QuestionReferenceService(
|
||||
TikuDbContext dbContext,
|
||||
IQuestionBankPersistence questionBankPersistence,
|
||||
IPublicQuestionAccessPolicy accessPolicy,
|
||||
ITenantExecutionScope tenantExecutionScope) : IQuestionReferenceService
|
||||
{
|
||||
@@ -28,7 +28,7 @@ public sealed class QuestionReferenceService(
|
||||
_ => throw new QuestionLocatorException("question_source_invalid", "Question source is invalid.")
|
||||
};
|
||||
|
||||
var existing = await dbContext.TenantQuestionReferences.SingleOrDefaultAsync(
|
||||
var existing = await questionBankPersistence.TenantQuestionReferences.SingleOrDefaultAsync(
|
||||
reference =>
|
||||
reference.TenantId == tenantId &&
|
||||
reference.QuestionOwnerTenantId == ownerTenantId &&
|
||||
@@ -44,7 +44,7 @@ public sealed class QuestionReferenceService(
|
||||
Source = locator.Source,
|
||||
CreatedBy = userId
|
||||
};
|
||||
dbContext.TenantQuestionReferences.Add(reference);
|
||||
questionBankPersistence.TenantQuestionReferences.Add(reference);
|
||||
return reference;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public sealed class QuestionReferenceService(
|
||||
Guid questionId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var exists = await dbContext.Questions.AsNoTracking().AnyAsync(
|
||||
var exists = await questionBankPersistence.Questions.AsNoTracking().AnyAsync(
|
||||
question =>
|
||||
question.TenantId == tenantId &&
|
||||
question.Id == questionId &&
|
||||
@@ -76,13 +76,14 @@ public sealed class QuestionReferenceService(
|
||||
"Resolve a platform question for an entitled tenant", Guid.NewGuid().ToString("N")),
|
||||
async (provider, token) =>
|
||||
{
|
||||
var systemDbContext = provider.GetRequiredService<TikuDbContext>();
|
||||
return await systemDbContext.Questions.AsNoTracking()
|
||||
var systemQuestionBank = provider.GetRequiredService<IQuestionBankPersistence>();
|
||||
var systemTenancy = provider.GetRequiredService<ITenancyPersistence>();
|
||||
return await systemQuestionBank.Questions.AsNoTracking()
|
||||
.Where(question =>
|
||||
question.Id == questionId &&
|
||||
question.Status == QuestionStatus.Published)
|
||||
.Join(
|
||||
systemDbContext.Tenants.AsNoTracking().Where(tenant => tenant.Mode == TenantMode.PlatformOwned),
|
||||
systemTenancy.Tenants.AsNoTracking().Where(tenant => tenant.Mode == TenantMode.PlatformOwned),
|
||||
question => question.TenantId,
|
||||
tenant => tenant.Id,
|
||||
(question, tenant) => (Guid?)tenant.Id)
|
||||
@@ -94,4 +95,4 @@ public sealed class QuestionReferenceService(
|
||||
"question_not_found",
|
||||
"Platform question was not found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user