using Tiku.Application.PlatformAdmin;
using Tiku.Application.Security;
using Tiku.Application.Tenancy;

namespace Tiku.Infrastructure.PlatformAdmin;

internal sealed class PlatformQuestionBankNodeService(
    ICurrentAccessContext currentAccessContext,
    ITenantExecutionScope tenantExecutionScope)
    : PlatformQuestionBankServiceBase(currentAccessContext, tenantExecutionScope), IPlatformQuestionBankNodeService
{
    public Task<IReadOnlyCollection<PlatformQuestionBankNodeItem>> GetNodesAsync(
        PlatformAdminActor actor,
        Guid bankId,
        CancellationToken cancellationToken = default) =>
        GetNodesCoreAsync(actor, bankId, cancellationToken);

    public Task<PlatformQuestionBankNodeItem> UpsertNodeAsync(
        PlatformAdminActor actor,
        UpsertPlatformQuestionBankNodeCommand command,
        CancellationToken cancellationToken = default) =>
        UpsertNodeCoreServiceAsync(actor, command, cancellationToken);

    public Task<IReadOnlyCollection<PlatformQuestionBankNodeItem>> BatchCreateNodesAsync(
        PlatformAdminActor actor,
        BatchCreatePlatformQuestionBankNodesCommand command,
        CancellationToken cancellationToken = default) =>
        BatchCreateNodesCoreAsync(actor, command, cancellationToken);

    public Task<PlatformQuestionBankNodeItem> ArchiveNodeAsync(
        PlatformAdminActor actor,
        Guid nodeId,
        CancellationToken cancellationToken = default) =>
        ArchiveNodeCoreAsync(actor, nodeId, cancellationToken);
}
