refactor(architecture): harden module boundaries
Some checks failed
ci / release-gate (push) Has been cancelled

This commit is contained in:
2026-08-04 12:10:36 +08:00
parent b38f12e60b
commit 33375a38d7
218 changed files with 5124 additions and 3828 deletions

View File

@@ -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.");
}
}
}