더북(TheBook)

10.4.1 코멘트 모델 만들기

먼저 코멘트 모델을 만들어 보자. app/models 디렉터리에 comment.go 파일을 생성하고 다음과 같이 코드를 작성한다.

▼ app/models/comment.go

package models
 
import (
    "time"
)
 
type Comment struct {
    Id        int64     `db:"id"`
    Body      string    `db:"body"`
    Commenter string    `db:"commenter"`
    PostId    int       `db:"post_id"`
    CreatedAt time.Time `db:"created_at"`
    UpdatedAt time.Time `db:"updated_at"`
}

다음으로 컨트롤러 모듈의 InitDB() 함수에 comments 테이블 생성 코드를 추가하자.

▼ app/controllers/init.go

func InitDB() {
    db.Init()
    schema := `
CREATE TABLE IF NOT EXISTS posts (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    title       TEXT                NOT NULL,
    body        TEXT                NOT NULL,
    created_at  DATETIME            NOT NULL,
    updated_at  DATETIME            NOT NULL
);
 
CREATE TABLE IF NOT EXISTS comments (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    body        TEXT                NOT NULL,
    commenter   TEXT                NOT NULL,
    post_id     INT                 NOT NULL,
    created_at  DATETIME            NOT NULL,
    updated_at  DATETIME            NOT NULL
);
`
 
    db.Db.Exec(schema)
}

각 댓글은 하나의 포스트에 속하고, 하나의 포스트는 댓글 여러 개를 가질 수 있다. 포스트 모델에 댓글 필드 Comments를 추가해 보자.

▼ app/models/post.go

type Post struct {
    Id         int      db:"id"
    Title      string   db:"title"
    Body       string   db:"body"
    CreatedAt time.Time db:"created_at"
    UpdatedAt time.Time db:"updated_at"
    Comments  []Comment
}

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