더북(TheBook)

10.3.3 포스트 컨트롤러 만들기

포스트 생성, 조회, 수정, 삭제 기능을 처리할 포스트 컨트롤러가 필요하다. app/controller에 post.go 파일을 생성하고 다음과 같이 코드를 작성하자.

▼ app/controllers/post.go

package controllers
 
import (
    "github.com/revel/modules/db/app"
    "github.com/revel/revel"
)
 
type Post struct {
    *revel.Controller
    db.Transactional
}

Post 구조체를 revel 컨트롤러로 정의하고(*revel.Controller를 임베디드 필드로 지정), 추가로 포스트 컨트롤러에서 데이터베이스 작업을 할 수 있게 db.Transactional도 임베디드 필드로 지정했다. db.Transactional은 Revel의 db 모듈에서 제공하는 것으로, Txn 필드를 통해 데이터베이스에 접근할 수 있다. Revel의 db 모듈에서 제공하는 Transactional 타입(https://github.com/revel/modules/blob/master/db/app/db.go#L41)은 다음과 같다.

▼ db.Transactional

type Transactional struct {
    *revel.Controller
    Txn *sql.Tx
}

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