mcp-quiz-server
Version:
🧠AI-Powered Quiz Management via Model Context Protocol (MCP) - Create, manage, and take quizzes directly from VS Code, Claude, and other AI agents.
87 lines (86 loc) • 2.33 kB
JavaScript
"use strict";
/**
* @fileoverview Quiz Deleted Domain Event - Clean Architecture Domain Layer
* @version 1.0.0
* @since 2025-07-30
* @module QuizDeletedEvent
* @description Domain event published when a quiz is deleted
*
* @architecture
* Layer: Domain (Events)
* Pattern: Domain Event Pattern
* Dependencies: DomainEvent base class
*
* @relationships
* PUBLISHED_BY:
* - DeleteQuizCommandHandler (Application Layer)
* CONSUMED_BY:
* - Event handlers (Infrastructure)
* - Notification services (Infrastructure)
*
* @contributors Claude Code Agent
* @testCoverage Event tests, integration tests
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.QuizDeletedEvent = void 0;
const DomainEvent_1 = require("./DomainEvent");
/**
* Quiz Deleted Domain Event
*
* @description Published when a quiz is successfully deleted from the system.
* Contains audit information and metadata for tracking.
*
* @example
* ```typescript
* const event = new QuizDeletedEvent({
* quizId: 'quiz-123',
* quizTitle: 'Math Quiz',
* deletedAt: '2025-07-30T10:00:00Z',
* deletedBy: 'admin-user',
* reason: 'Outdated content'
* });
* ```
*
* @since 2025-07-30
* @author Claude Code Agent
*/
class QuizDeletedEvent extends DomainEvent_1.DomainEvent {
constructor(data) {
super('QuizDeleted');
this.quizId = data.quizId;
this.quizTitle = data.quizTitle;
this.deletedAt = data.deletedAt;
this.deletedBy = data.deletedBy;
this.reason = data.reason;
this.metadata = data.metadata || {};
}
/**
* Get the aggregate ID (Quiz ID) that this event relates to
*/
getAggregateId() {
return this.quizId;
}
/**
* Get event data for serialization
*/
getEventData() {
return {
quizId: this.quizId,
quizTitle: this.quizTitle,
deletedAt: this.deletedAt,
deletedBy: this.deletedBy,
reason: this.reason,
metadata: this.metadata,
};
}
/**
* Legacy method for backward compatibility
*/
getData() {
return {
eventType: this.eventType,
...this.getEventData(),
};
}
}
exports.QuizDeletedEvent = QuizDeletedEvent;