|
@@ -1,193 +1,193 @@
|
|
|
package fetdata
|
|
|
|
|
|
-import (
|
|
|
- "math"
|
|
|
- "strconv"
|
|
|
- "strings"
|
|
|
-
|
|
|
- "golang-fave/engine/sqlw"
|
|
|
- "golang-fave/utils"
|
|
|
-)
|
|
|
-
|
|
|
-func (this *FERData) postsGetCount(buf string, cat int) (int, int) {
|
|
|
- if cat == 0 {
|
|
|
- var num int
|
|
|
- if err := this.wrap.DB.QueryRow(`
|
|
|
- SELECT
|
|
|
- COUNT(*)
|
|
|
- FROM
|
|
|
- blog_posts
|
|
|
- WHERE
|
|
|
- active = 1
|
|
|
- ;
|
|
|
- `).Scan(&num); err == nil {
|
|
|
- pear_page := 2
|
|
|
- max_pages := int(math.Ceil(float64(num) / float64(pear_page)))
|
|
|
- curr_page := 1
|
|
|
- p := this.wrap.R.URL.Query().Get("p")
|
|
|
- if p != "" {
|
|
|
- pi, err := strconv.Atoi(p)
|
|
|
- if err != nil {
|
|
|
- curr_page = 1
|
|
|
- } else {
|
|
|
- if pi < 1 {
|
|
|
- curr_page = 1
|
|
|
- } else if pi > max_pages {
|
|
|
- curr_page = max_pages
|
|
|
- } else {
|
|
|
- curr_page = pi
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- limit_offset := curr_page*pear_page - pear_page
|
|
|
- return limit_offset, pear_page
|
|
|
- }
|
|
|
- } else {
|
|
|
- var num int
|
|
|
- if err := this.wrap.DB.QueryRow(`
|
|
|
- SELECT
|
|
|
- COUNT(blog_posts.id)
|
|
|
- FROM
|
|
|
- blog_posts
|
|
|
- LEFT JOIN blog_cat_post_rel ON blog_cat_post_rel.post_id = blog_posts.id
|
|
|
- WHERE
|
|
|
- blog_posts.active = 1 AND
|
|
|
- blog_cat_post_rel.category_id = ?
|
|
|
- ;
|
|
|
- `, cat).Scan(&num); err == nil {
|
|
|
- pear_page := 2
|
|
|
- max_pages := int(math.Ceil(float64(num) / float64(pear_page)))
|
|
|
- curr_page := 1
|
|
|
- p := this.wrap.R.URL.Query().Get("p")
|
|
|
- if p != "" {
|
|
|
- pi, err := strconv.Atoi(p)
|
|
|
- if err != nil {
|
|
|
- curr_page = 1
|
|
|
- } else {
|
|
|
- if pi < 1 {
|
|
|
- curr_page = 1
|
|
|
- } else if pi > max_pages {
|
|
|
- curr_page = max_pages
|
|
|
- } else {
|
|
|
- curr_page = pi
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- limit_offset := curr_page*pear_page - pear_page
|
|
|
- return limit_offset, pear_page
|
|
|
- }
|
|
|
- }
|
|
|
- return 0, 0
|
|
|
-}
|
|
|
-
|
|
|
-func (this *FERData) postsToBuffer(buf string, cat int, order string) {
|
|
|
- if this.bufferPosts == nil {
|
|
|
- this.bufferPosts = map[string][]*BlogPost{}
|
|
|
- }
|
|
|
- if _, ok := this.bufferPosts[buf]; !ok {
|
|
|
- var posts []*BlogPost
|
|
|
-
|
|
|
- limit_offset, pear_page := this.postsGetCount(buf, cat)
|
|
|
-
|
|
|
- var rows *sqlw.Rows
|
|
|
- var err error
|
|
|
-
|
|
|
- if cat == 0 {
|
|
|
- rows, err = this.wrap.DB.Query(`
|
|
|
- SELECT
|
|
|
- blog_posts.id,
|
|
|
- blog_posts.user,
|
|
|
- blog_posts.name,
|
|
|
- blog_posts.alias,
|
|
|
- blog_posts.content,
|
|
|
- UNIX_TIMESTAMP(blog_posts.datetime) AS datetime,
|
|
|
- blog_posts.active
|
|
|
- FROM
|
|
|
- blog_posts
|
|
|
- WHERE
|
|
|
- blog_posts.active = 1
|
|
|
- ORDER BY
|
|
|
- blog_posts.id `+order+`
|
|
|
- LIMIT ?, ?;
|
|
|
- `, limit_offset, pear_page)
|
|
|
- } else {
|
|
|
- rows, err = this.wrap.DB.Query(`
|
|
|
- SELECT
|
|
|
- blog_posts.id,
|
|
|
- blog_posts.user,
|
|
|
- blog_posts.name,
|
|
|
- blog_posts.alias,
|
|
|
- blog_posts.content,
|
|
|
- UNIX_TIMESTAMP(blog_posts.datetime) AS datetime,
|
|
|
- blog_posts.active
|
|
|
- FROM
|
|
|
- blog_posts
|
|
|
- LEFT JOIN blog_cat_post_rel ON blog_cat_post_rel.post_id = blog_posts.id
|
|
|
- WHERE
|
|
|
- blog_posts.active = 1 AND
|
|
|
- blog_cat_post_rel.category_id = ?
|
|
|
- ORDER BY
|
|
|
- blog_posts.id `+order+`
|
|
|
- LIMIT ?, ?;
|
|
|
- `, cat, limit_offset, pear_page)
|
|
|
- }
|
|
|
-
|
|
|
- if err == nil {
|
|
|
- var f_id int
|
|
|
- var f_user int
|
|
|
- var f_name string
|
|
|
- var f_alias string
|
|
|
- var f_content string
|
|
|
- var f_datetime int
|
|
|
- var f_active int
|
|
|
- for rows.Next() {
|
|
|
- err = rows.Scan(&f_id, &f_user, &f_name, &f_alias, &f_content, &f_datetime, &f_active)
|
|
|
- if err == nil {
|
|
|
- posts = append(posts, &BlogPost{
|
|
|
- id: f_id,
|
|
|
- user: f_user,
|
|
|
- name: f_name,
|
|
|
- alias: f_alias,
|
|
|
- content: f_content,
|
|
|
- datetime: f_datetime,
|
|
|
- active: f_active,
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- rows.Close()
|
|
|
- }
|
|
|
- this.bufferPosts[buf] = posts
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func (this *FERData) BlogPosts() []*BlogPost {
|
|
|
- return this.BlogPostsOrder("DESC")
|
|
|
-}
|
|
|
-
|
|
|
-func (this *FERData) BlogPostsOrder(order string) []*BlogPost {
|
|
|
- posts_order := "DESC"
|
|
|
-
|
|
|
- if strings.ToLower(order) == "asc" {
|
|
|
- posts_order = "ASC"
|
|
|
- }
|
|
|
-
|
|
|
- buf := "posts_" + posts_order
|
|
|
- this.postsToBuffer(buf, 0, posts_order)
|
|
|
- return this.bufferPosts[buf]
|
|
|
-}
|
|
|
-
|
|
|
-func (this *FERData) BlogPostsOfCat(cat int) []*BlogPost {
|
|
|
- return this.BlogPostsOfCatOrder(cat, "DESC")
|
|
|
-}
|
|
|
-
|
|
|
-func (this *FERData) BlogPostsOfCatOrder(cat int, order string) []*BlogPost {
|
|
|
- posts_order := "DESC"
|
|
|
-
|
|
|
- if strings.ToLower(order) == "asc" {
|
|
|
- posts_order = "ASC"
|
|
|
- }
|
|
|
-
|
|
|
- buf := "posts_" + posts_order + "_" + utils.IntToStr(cat)
|
|
|
- this.postsToBuffer(buf, cat, posts_order)
|
|
|
- return this.bufferPosts[buf]
|
|
|
-}
|
|
|
+// import (
|
|
|
+// "math"
|
|
|
+// "strconv"
|
|
|
+// "strings"
|
|
|
+
|
|
|
+// "golang-fave/engine/sqlw"
|
|
|
+// "golang-fave/utils"
|
|
|
+// )
|
|
|
+
|
|
|
+// func (this *FERData) postsGetCount(buf string, cat int) (int, int) {
|
|
|
+// if cat == 0 {
|
|
|
+// var num int
|
|
|
+// if err := this.wrap.DB.QueryRow(`
|
|
|
+// SELECT
|
|
|
+// COUNT(*)
|
|
|
+// FROM
|
|
|
+// blog_posts
|
|
|
+// WHERE
|
|
|
+// active = 1
|
|
|
+// ;
|
|
|
+// `).Scan(&num); err == nil {
|
|
|
+// pear_page := 2
|
|
|
+// max_pages := int(math.Ceil(float64(num) / float64(pear_page)))
|
|
|
+// curr_page := 1
|
|
|
+// p := this.wrap.R.URL.Query().Get("p")
|
|
|
+// if p != "" {
|
|
|
+// pi, err := strconv.Atoi(p)
|
|
|
+// if err != nil {
|
|
|
+// curr_page = 1
|
|
|
+// } else {
|
|
|
+// if pi < 1 {
|
|
|
+// curr_page = 1
|
|
|
+// } else if pi > max_pages {
|
|
|
+// curr_page = max_pages
|
|
|
+// } else {
|
|
|
+// curr_page = pi
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// limit_offset := curr_page*pear_page - pear_page
|
|
|
+// return limit_offset, pear_page
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// var num int
|
|
|
+// if err := this.wrap.DB.QueryRow(`
|
|
|
+// SELECT
|
|
|
+// COUNT(blog_posts.id)
|
|
|
+// FROM
|
|
|
+// blog_posts
|
|
|
+// LEFT JOIN blog_cat_post_rel ON blog_cat_post_rel.post_id = blog_posts.id
|
|
|
+// WHERE
|
|
|
+// blog_posts.active = 1 AND
|
|
|
+// blog_cat_post_rel.category_id = ?
|
|
|
+// ;
|
|
|
+// `, cat).Scan(&num); err == nil {
|
|
|
+// pear_page := 2
|
|
|
+// max_pages := int(math.Ceil(float64(num) / float64(pear_page)))
|
|
|
+// curr_page := 1
|
|
|
+// p := this.wrap.R.URL.Query().Get("p")
|
|
|
+// if p != "" {
|
|
|
+// pi, err := strconv.Atoi(p)
|
|
|
+// if err != nil {
|
|
|
+// curr_page = 1
|
|
|
+// } else {
|
|
|
+// if pi < 1 {
|
|
|
+// curr_page = 1
|
|
|
+// } else if pi > max_pages {
|
|
|
+// curr_page = max_pages
|
|
|
+// } else {
|
|
|
+// curr_page = pi
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// limit_offset := curr_page*pear_page - pear_page
|
|
|
+// return limit_offset, pear_page
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return 0, 0
|
|
|
+// }
|
|
|
+
|
|
|
+// func (this *FERData) postsToBuffer(buf string, cat int, order string) {
|
|
|
+// if this.bufferPosts == nil {
|
|
|
+// this.bufferPosts = map[string][]*BlogPost{}
|
|
|
+// }
|
|
|
+// if _, ok := this.bufferPosts[buf]; !ok {
|
|
|
+// var posts []*BlogPost
|
|
|
+
|
|
|
+// limit_offset, pear_page := this.postsGetCount(buf, cat)
|
|
|
+
|
|
|
+// var rows *sqlw.Rows
|
|
|
+// var err error
|
|
|
+
|
|
|
+// if cat == 0 {
|
|
|
+// rows, err = this.wrap.DB.Query(`
|
|
|
+// SELECT
|
|
|
+// blog_posts.id,
|
|
|
+// blog_posts.user,
|
|
|
+// blog_posts.name,
|
|
|
+// blog_posts.alias,
|
|
|
+// blog_posts.content,
|
|
|
+// UNIX_TIMESTAMP(blog_posts.datetime) AS datetime,
|
|
|
+// blog_posts.active
|
|
|
+// FROM
|
|
|
+// blog_posts
|
|
|
+// WHERE
|
|
|
+// blog_posts.active = 1
|
|
|
+// ORDER BY
|
|
|
+// blog_posts.id `+order+`
|
|
|
+// LIMIT ?, ?;
|
|
|
+// `, limit_offset, pear_page)
|
|
|
+// } else {
|
|
|
+// rows, err = this.wrap.DB.Query(`
|
|
|
+// SELECT
|
|
|
+// blog_posts.id,
|
|
|
+// blog_posts.user,
|
|
|
+// blog_posts.name,
|
|
|
+// blog_posts.alias,
|
|
|
+// blog_posts.content,
|
|
|
+// UNIX_TIMESTAMP(blog_posts.datetime) AS datetime,
|
|
|
+// blog_posts.active
|
|
|
+// FROM
|
|
|
+// blog_posts
|
|
|
+// LEFT JOIN blog_cat_post_rel ON blog_cat_post_rel.post_id = blog_posts.id
|
|
|
+// WHERE
|
|
|
+// blog_posts.active = 1 AND
|
|
|
+// blog_cat_post_rel.category_id = ?
|
|
|
+// ORDER BY
|
|
|
+// blog_posts.id `+order+`
|
|
|
+// LIMIT ?, ?;
|
|
|
+// `, cat, limit_offset, pear_page)
|
|
|
+// }
|
|
|
+
|
|
|
+// if err == nil {
|
|
|
+// var f_id int
|
|
|
+// var f_user int
|
|
|
+// var f_name string
|
|
|
+// var f_alias string
|
|
|
+// var f_content string
|
|
|
+// var f_datetime int
|
|
|
+// var f_active int
|
|
|
+// for rows.Next() {
|
|
|
+// err = rows.Scan(&f_id, &f_user, &f_name, &f_alias, &f_content, &f_datetime, &f_active)
|
|
|
+// if err == nil {
|
|
|
+// posts = append(posts, &BlogPost{
|
|
|
+// id: f_id,
|
|
|
+// user: f_user,
|
|
|
+// name: f_name,
|
|
|
+// alias: f_alias,
|
|
|
+// content: f_content,
|
|
|
+// datetime: f_datetime,
|
|
|
+// active: f_active,
|
|
|
+// })
|
|
|
+// }
|
|
|
+// }
|
|
|
+// rows.Close()
|
|
|
+// }
|
|
|
+// this.bufferPosts[buf] = posts
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// func (this *FERData) BlogPosts() []*BlogPost {
|
|
|
+// return this.BlogPostsOrder("DESC")
|
|
|
+// }
|
|
|
+
|
|
|
+// func (this *FERData) BlogPostsOrder(order string) []*BlogPost {
|
|
|
+// posts_order := "DESC"
|
|
|
+
|
|
|
+// if strings.ToLower(order) == "asc" {
|
|
|
+// posts_order = "ASC"
|
|
|
+// }
|
|
|
+
|
|
|
+// buf := "posts_" + posts_order
|
|
|
+// this.postsToBuffer(buf, 0, posts_order)
|
|
|
+// return this.bufferPosts[buf]
|
|
|
+// }
|
|
|
+
|
|
|
+// func (this *FERData) BlogPostsOfCat(cat int) []*BlogPost {
|
|
|
+// return this.BlogPostsOfCatOrder(cat, "DESC")
|
|
|
+// }
|
|
|
+
|
|
|
+// func (this *FERData) BlogPostsOfCatOrder(cat int, order string) []*BlogPost {
|
|
|
+// posts_order := "DESC"
|
|
|
+
|
|
|
+// if strings.ToLower(order) == "asc" {
|
|
|
+// posts_order = "ASC"
|
|
|
+// }
|
|
|
+
|
|
|
+// buf := "posts_" + posts_order + "_" + utils.IntToStr(cat)
|
|
|
+// this.postsToBuffer(buf, cat, posts_order)
|
|
|
+// return this.bufferPosts[buf]
|
|
|
+// }
|