MCPcopy Create free account
hub / github.com/TruthHun/BookStack / FindForLabelToPager

Method FindForLabelToPager

models/book.go:554–588  ·  view source on GitHub ↗

分页全局搜索.

(keyword string, pageIndex, pageSize, memberId int)

Source from the content-addressed store, hash-verified

552
553//分页全局搜索.
554func (m *Book) FindForLabelToPager(keyword string, pageIndex, pageSize, memberId int) (books []*BookResult, totalCount int, err error) {
555 o := orm.NewOrm()
556
557 keyword = "%" + keyword + "%"
558 offset := (pageIndex - 1) * pageSize
559 //如果是登录用户
560 if memberId > 0 {
561 sql1 := "SELECT COUNT(*) FROM md_books AS book LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.member_id = ? WHERE (relationship_id > 0 OR book.privately_owned = 0) AND (book.label LIKE ? or book.book_name like ?) limit 1"
562 if err = o.Raw(sql1, memberId, keyword, keyword).QueryRow(&totalCount); err != nil {
563 return
564 }
565
566 sql2 := `SELECT book.*,rel1.*,member.account AS create_name FROM md_books AS book
567 LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.member_id = ?
568 LEFT JOIN md_relationship AS rel1 ON rel1.book_id = book.book_id AND rel1.role_id = 0
569 LEFT JOIN md_members AS member ON rel1.member_id = member.member_id
570 WHERE (rel.relationship_id > 0 OR book.privately_owned = 0) AND (book.label LIKE ? or book.book_name like ?) ORDER BY order_index DESC ,book.book_id DESC LIMIT ?,?`
571
572 _, err = o.Raw(sql2, memberId, keyword, keyword, offset, pageSize).QueryRows(&books)
573 return
574 }
575
576 sql1 := "select COUNT(*) from md_books where privately_owned=0 and (label LIKE ? or book_name like ?) limit 1"
577 if err = o.Raw(sql1, keyword, keyword).QueryRow(&totalCount); err != nil {
578 return
579 }
580
581 sql := `SELECT book.*,rel.*,member.account AS create_name FROM md_books AS book
582 LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.role_id = 0
583 LEFT JOIN md_members AS member ON rel.member_id = member.member_id
584 WHERE book.privately_owned = 0 AND (book.label LIKE ? or book.book_name LIKE ?) ORDER BY order_index DESC ,book.book_id DESC LIMIT ?,?`
585
586 _, err = o.Raw(sql, keyword, keyword, offset, pageSize).QueryRows(&books)
587 return
588}
589
590func (book *Book) ToBookResult() (m *BookResult) {
591 m = &BookResult{}

Callers 1

IndexMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected