NAM-APJATEL-BACKEND/usecase/AGENTS.md

1.2 KiB
Raw Blame History

OVERVIEW Scaffold for 14 highcomplexity use cases with strict interfaces and DI.

WHERE TO LOOK

  • usecase/ directory for interfaces and New{Entity}UseCase constructors
  • repository/ for repository interfaces consumed by use cases
  • model/ for DTOs and domain entities used by use cases
  • manager/ for DI wiring examples (injecting GeocodingService)
  • config/ or utils/ for validator setup references invoked by use cases

CONVENTIONS

  • Use case interfaces define all methods for an entity
  • Constructor: New{Entity}UseCase(repo, geocoder) returns {Entity}UseCase interface
  • Validation uses validator.New() inside use cases
  • GeocodingService is injected via dependency injection (not instantiated in use cases)
  • File naming uses snake_case; interfaces named {Entity}UseCase / {Entity}Repo
  • Test file: {name}_test.go with mock implementations

ANTI-PATTERNS

  • Do not skip validation in use cases; always validate inputs via validator
  • Do not couple to concrete repositories; depend on interfaces only
  • Do not instantiate GeocodingService inside use cases; rely on DI
  • Do not mix business logic into delivery layer
  • Do not bypass existing patterns for separation of concerns (use cases separate from controllers)