ποΈ Architecture Enhancement & API Documentation
π What's Changed
π Mapper Hierarchy Refactoring
- Moved mappers to top-level architecture following Clean Architecture principles
- Bottom layers no longer depend on top-layer types
- Improved separation of concerns and reduced coupling
π Swagger Documentation
- Added complete OpenAPI 2.0 specification
- Interactive API explorer available at
/swagger/
- Auto-generated docs with request/response schemas
π― Design Patterns
Option Pattern
// Flexible User Detail
func(r *repository) UserDetail(ctx context.Context, opts ...entities.UserDetailOption) (user entities.User, err error)
Factory Method Pattern
type UserDetailRequest interface {
ToUserDetailOption() entities.UserDetailOption
}
// Polymorphic request handling
func GetUserDetail(req UserDetailRequest) {
option := req.ToUserDetailOption()
return userService.GetDetail(option)
}
β Benefits
- Cleaner Dependencies: Better architecture hierarchy
- Better Documentation: Interactive API docs
- Flexible APIs: Option pattern for backward compatibility
- Extensible Code: Easy to add new request types
What's Changed
- golang clean architecture v2 by @martinyonatann in #37
Full Changelog: v0.0.9...v2.0.0