Files
tiku-backend.net/Tiku.Infrastructure/Content/Foundation/DirectContentFoundation.cs
xiong 33375a38d7
Some checks failed
ci / release-gate (push) Has been cancelled
refactor(architecture): harden module boundaries
2026-08-04 12:10:36 +08:00

61 lines
2.7 KiB
C#

using System.Text.RegularExpressions;
using Tiku.Application.Content;
using Tiku.Application.QuestionBanks;
using Tiku.Application.Security;
using Tiku.Infrastructure.Persistence;
namespace Tiku.Infrastructure.Content;
internal sealed record DirectContentServiceDependencies(
IQuestionBankPersistence QuestionBankPersistence,
IContentAssetPersistence ContentAssetPersistence,
ICatalogPersistence CatalogPersistence,
ILearningPersistence LearningPersistence,
ITenantAdministrationPersistence TenantAdministrationPersistence,
IJobsOperationsPersistence JobsOperationsPersistence,
IQuestionReferenceService QuestionReferenceService,
ICurrentAccessContext CurrentAccessContext,
IFeatureAccessService FeatureAccessService);
internal abstract partial class DirectContentServiceBase(DirectContentServiceDependencies dependencies)
{
protected IQuestionBankPersistence questionBankPersistence { get; } = dependencies.QuestionBankPersistence;
protected IContentAssetPersistence contentAssetPersistence { get; } = dependencies.ContentAssetPersistence;
protected ICatalogPersistence catalogPersistence { get; } = dependencies.CatalogPersistence;
protected ILearningPersistence learningPersistence { get; } = dependencies.LearningPersistence;
protected ITenantAdministrationPersistence tenantAdministrationPersistence { get; } =
dependencies.TenantAdministrationPersistence;
protected IJobsOperationsPersistence jobsOperationsPersistence { get; } = dependencies.JobsOperationsPersistence;
protected IModulePersistence unitOfWork { get; } = dependencies.QuestionBankPersistence;
protected IQuestionReferenceService questionReferenceService { get; } = dependencies.QuestionReferenceService;
protected ICurrentAccessContext currentAccessContext { get; } = dependencies.CurrentAccessContext;
protected IFeatureAccessService featureAccessService { get; } = dependencies.FeatureAccessService;
protected const int DefaultLimit = 100;
protected const int MaxLimit = 1000;
protected static readonly string[] ContentPermissions =
[
BackendPermissions.TenantContentManage,
BackendPermissions.TenantVocabularyManage,
BackendPermissions.TenantHandbookManage,
BackendPermissions.TenantVideoManage,
BackendPermissions.TenantScorelineManage,
BackendPermissions.TenantSiteContentManage,
BackendPermissions.TenantJobManage
];
protected static readonly Regex ScorelineFieldKeyRegex = new("^[A-Za-z][A-Za-z0-9_]{0,63}$", RegexOptions.Compiled);
protected static readonly HashSet<string> SupportedImportTypes = new(StringComparer.OrdinalIgnoreCase)
{
"questions",
"vocabulary",
"handbook",
"scoreline",
"videos"
};
}