forked from xiongyuxing/tiku-backend.net
feat: add question bank readonly endpoints
This commit is contained in:
22
Tiku.Application/QuestionBanks/IQuestionBankQueryService.cs
Normal file
22
Tiku.Application/QuestionBanks/IQuestionBankQueryService.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using Tiku.Application.Catalog;
|
||||
|
||||
namespace Tiku.Application.QuestionBanks;
|
||||
|
||||
public interface IQuestionBankQueryService
|
||||
{
|
||||
Task<CatalogList<QuestionBankCatalogItem>> GetQuestionBanksAsync(
|
||||
QuestionBankFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<CatalogList<QuestionCatalogItem>> GetQuestionsAsync(
|
||||
QuestionBankFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<QuestionCatalogItem> GetQuestionAsync(
|
||||
QuestionBankFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
Task<CatalogList<QuestionVersionCatalogItem>> GetQuestionVersionsAsync(
|
||||
QuestionBankFilter filter,
|
||||
CancellationToken cancellationToken = default);
|
||||
}
|
||||
76
Tiku.Application/QuestionBanks/QuestionBankQueryModels.cs
Normal file
76
Tiku.Application/QuestionBanks/QuestionBankQueryModels.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using System.Text.Json;
|
||||
using Tiku.Domain.QuestionBanks;
|
||||
|
||||
namespace Tiku.Application.QuestionBanks;
|
||||
|
||||
public sealed record QuestionBankFilter(
|
||||
Guid TenantId,
|
||||
Guid? RegionId = null,
|
||||
Guid? QuestionBankId = null,
|
||||
Guid? SubjectId = null,
|
||||
Guid? CategoryId = null,
|
||||
Guid? NodeId = null,
|
||||
Guid? EntryId = null,
|
||||
Guid? ContentNodeId = null,
|
||||
Guid? CollectionId = null,
|
||||
Guid? QuestionId = null,
|
||||
IReadOnlyCollection<Guid>? QuestionIds = null,
|
||||
string? Type = null,
|
||||
string? Keyword = null,
|
||||
int? Limit = null);
|
||||
|
||||
public sealed record QuestionBankCatalogItem(
|
||||
Guid Id,
|
||||
Guid? RegionId,
|
||||
string Name,
|
||||
QuestionBankScope SourceScope,
|
||||
QuestionBankStatus Status,
|
||||
JsonElement Metadata);
|
||||
|
||||
public sealed record QuestionCatalogItem(
|
||||
Guid Id,
|
||||
Guid? QuestionBankId,
|
||||
Guid? SubjectId,
|
||||
Guid? CategoryId,
|
||||
Guid? NodeId,
|
||||
Guid? EntryId,
|
||||
Guid? ContentNodeId,
|
||||
Guid? PrimaryCollectionId,
|
||||
string? LegacyId,
|
||||
string? LegacySubjectId,
|
||||
string? LegacyCategoryId,
|
||||
string? LegacyNodeId,
|
||||
string Type,
|
||||
string? TypeLabel,
|
||||
int? Difficulty,
|
||||
JsonElement Tags,
|
||||
JsonElement ExamMarkers,
|
||||
string? MediaUrl,
|
||||
bool HasVideoExplanation,
|
||||
QuestionStatus Status,
|
||||
Guid? VersionId,
|
||||
int? VersionNo,
|
||||
string? Content,
|
||||
JsonElement Options,
|
||||
int? CorrectOptionIndex,
|
||||
JsonElement CorrectOptionIndices,
|
||||
string? AnswerText,
|
||||
string? Explanation,
|
||||
JsonElement SubQuestions,
|
||||
string? CodeLang,
|
||||
string? CodeTemplate);
|
||||
|
||||
public sealed record QuestionVersionCatalogItem(
|
||||
Guid Id,
|
||||
Guid QuestionId,
|
||||
int VersionNo,
|
||||
string? Content,
|
||||
JsonElement Options,
|
||||
int? CorrectOptionIndex,
|
||||
JsonElement CorrectOptionIndices,
|
||||
string? AnswerText,
|
||||
string? Explanation,
|
||||
JsonElement SubQuestions,
|
||||
string? CodeLang,
|
||||
string? CodeTemplate,
|
||||
DateTimeOffset CreatedAt);
|
||||
Reference in New Issue
Block a user