더북(TheBook)

2.5 맵으로부터 목록 제공하기

이제 이 네 가지 함수를 Zettai 클래스에 넣고 구현할 수 있다.

하지만 먼저 보여줄 목록이 몇 가지 필요하다. 지금은 가능한 가장 간단한 접근 방식을 취해서, 우리 시스템의 각 사용자 목록을 불변 맵에 넣고 Zettai의 생성자에게 주입하자.

data class Zettai(val lists: Map<User, List<ToDoList>>): HttpHandler{ 
 
    // 경로 함수는 그대로이다.

    private fun showList(request: Request): Response = 
        request.let(::extractListData)
            .let(::fetchListContent)
            .let(::renderHtml)
            .let(::createResponse)

    fun extractListData(request: Request): Pair<User, ListName> {  
        val user = request.path("user").orEmpty()
        val list = request.path("list").orEmpty()
        return User(user) to ListName(list)
    }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.