Skip to content

v2.0.0

Latest
Compare
Choose a tag to compare
@martinyonatann martinyonatann released this 05 Sep 18:04
5c4436b

πŸ—οΈ 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

Full Changelog: v0.0.9...v2.0.0