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 intdb:"id"
Title stringdb:"title"
Body stringdb:"body"
CreatedAt time.Timedb:"created_at"
UpdatedAt time.Timedb:"updated_at"
Comments []Comment }