Andrés Eduardo García Márquez
|
68e420fdf2
|
feat(application): add CQRS application layer
Commands:
- CreateStudent, UpdateStudent, DeleteStudent
- EnrollStudent, UnenrollStudent
Queries:
- GetStudents, GetStudentById, GetStudentsPaged
- GetSubjects, GetAvailableSubjects
- GetProfessors
- GetClassmates
DTOs:
- StudentDto, SubjectDto, ProfessorDto, EnrollmentDtos
Validation:
- FluentValidation with ValidationBehavior pipeline
- EnrollStudentValidator for input validation
Uses MediatR for command/query dispatching
|
2026-01-07 22:59:23 -05:00 |
Andrés Eduardo García Márquez
|
2d6c08e14a
|
feat(domain): add core domain layer
Entities:
- Student: core entity with email validation
- Subject: course with credits (3 each)
- Professor: instructor managing 2 subjects
- Enrollment: student-subject relationship
Value Objects:
- Email: validated email with domain rules
Domain Services:
- EnrollmentDomainService: validates business rules
- Max 3 subjects per student (9 credits)
- No duplicate professor constraint
Ports:
- Repository interfaces for dependency inversion
|
2026-01-07 22:59:10 -05:00 |