Slide 27
Slide 27 text
QueryService
interface ProductApplicationQueryService {
//
詳細画面などで必要になる、ID
が一致するReadModel
を引っ張ってくるやつ
findOne: (id: string) => Promise;
//
一覧画面のページネーションとかで必要になるやつ
paginate: (page: number, perPage: number) => Page;
//
複雑な検索などもOK
relatedApplications: (id: string) => Promise
}
//
インターフェースを切るならデータソースごとに実装を作るイメージ
class MySqlProductApplicationQueryService implements ProductApplicationQueryService {
// ...
}
class InMemoryProductApplicationQueryService implements ProductApplicationQueryService {
// ...
}
ゆるふわCQRSの紹介 27