func getPosts(g *gas.Gas, postId interface{}) []*Post { rows, err := QueryPage.Query(postId) if err != nil { g.ErrorPage(http.StatusServiceUnavailable) panic(err) } posts := []*Post{} for rows.Next() { // TODO: better way to do this? var ( id int64 stamp string title string body []byte tag string ) err = rows.Scan(&id, &stamp, &title, &body, &tag) if err != nil { g.ErrorPage(http.StatusServiceUnavailable) } timestamp, _ := time.Parse("2006-01-02 15:04:05-07", stamp) posts = append(posts, &Post{id, timestamp, title, string(blackfriday.MarkdownCommon(body)), tag}) } return posts }
func EditPost(g *gas.Gas, postId string) { switch g.Method { case "GET": row := QuerySinglePost.QueryRow(postId) var ( id int64 tag string stamp, title string body string ) err := row.Scan(&id, &stamp, &title, &body, &tag) if err != nil { log.Printf("blog.EditPost(): %v", err) g.ErrorPage(http.StatusServiceUnavailable) } timestamp, _ := time.Parse("2006-01-02 15:04:05-07", stamp) g.Render("blog/editpost", &Post{id, timestamp, title, body, tag}) case "POST": QueryEditPost.Exec(g.FormValue("body"), postId) http.Redirect(g.ResponseWriter, g.Request, "/blog/", http.StatusFound) } }
func Page(g *gas.Gas, page string) { pageId, _ := strconv.Atoi(page) posts := getPosts(g, pageId) if len(posts) < 1 { g.ErrorPage(http.StatusNotFound) } g.Render("blog/index", posts) }
func SinglePost(g *gas.Gas, postId string) { row := QuerySinglePost.QueryRow(postId) var ( id int64 stamp string title string body []byte tag string ) err := row.Scan(&id, &stamp, &title, &body, &tag) if err != nil { log.Printf("blog.SinglePost(): %v", err) g.ErrorPage(http.StatusServiceUnavailable) } timestamp, _ := time.Parse("2006-01-02 15:04:05-07", stamp) g.Render("blog/onepost", &Post{id, timestamp, title, string(blackfriday.MarkdownCommon(body)), tag}) }