Domain層でoapi型は使わない?
code:go
OpenAPIから生成された型:
- GetAuthorByIdRequestObject - ID取得用(832行目)
- GetAuthorsRequestObject - 一覧取得用(697行目)
- SearchAuthorsRequestObject - 検索用(786行目)
ただし、重要な設計原則があります:
クリーンアーキテクチャの依存関係
Handler層 → UseCase層 → Domain層
↓ ↓ ↑
oapi 使用 依存しない
domain/queryインターフェースは:
- ❌ oapiの型を使わない(外部依存を避ける)
- ✅ プリミティブ型(int64, string)を使う
handler層で変換:
// Handlerで oapi → domain への変換
func (h *Handler) GetAuthorById(ctx context.Context, req GetAuthorByIdRequestObject) {
author, err := h.authorQuery.GetByID(ctx, req.Id) // req.Id を渡す
}
このため、domain層ではid int64を直接受け取る設計が正しい。