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

Method FindToPager

models/document_search_result.go:43–94  ·  view source on GitHub ↗

分页全局搜索.

(keyword string, pageIndex, pageSize, memberId int)

Source from the content-addressed store, hash-verified

41
42//分页全局搜索.
43func (m *DocumentSearchResult) FindToPager(keyword string, pageIndex, pageSize, memberId int) (searchResult []*DocumentSearchResult, totalCount int, err error) {
44 o := orm.NewOrm()
45
46 offset := (pageIndex - 1) * pageSize
47 keyword = "%" + keyword + "%"
48
49 if memberId <= 0 {
50 sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc
51 LEFT JOIN md_books as book ON doc.book_id = book.book_id
52WHERE book.privately_owned = 0 AND (doc.document_name LIKE ? OR doc.release LIKE ?) `
53
54 sql2 := `SELECT doc.document_id,doc.modify_time,doc.create_time,doc.document_name,doc.identify,doc.release as description,doc.modify_time,book.identify as book_identify,book.book_name,rel.member_id,member.account AS author FROM md_documents AS doc
55 LEFT JOIN md_books as book ON doc.book_id = book.book_id
56 LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND rel.role_id = 0
57 LEFT JOIN md_members as member ON rel.member_id = member.member_id
58WHERE book.privately_owned = 0 AND (doc.document_name LIKE ? OR doc.release LIKE ?)
59 ORDER BY doc.document_id DESC LIMIT ?,? `
60
61 err = o.Raw(sql1, keyword, keyword).QueryRow(&totalCount)
62 if err != nil {
63 return
64 }
65 _, err = o.Raw(sql2, keyword, keyword, offset, pageSize).QueryRows(&searchResult)
66 if err != nil {
67 return
68 }
69 } else {
70 sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc
71 LEFT JOIN md_books as book ON doc.book_id = book.book_id
72 LEFT JOIN md_relationship AS rel ON doc.book_id = rel.book_id AND rel.role_id = 0
73 LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ?
74WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?) `
75
76 sql2 := `SELECT doc.document_id,doc.modify_time,doc.create_time,doc.document_name,doc.identify,doc.release as description,doc.modify_time,book.identify as book_identify,book.book_name,rel.member_id,member.account AS author FROM md_documents AS doc
77 LEFT JOIN md_books as book ON doc.book_id = book.book_id
78 LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND rel.role_id = 0
79 LEFT JOIN md_members as member ON rel.member_id = member.member_id
80 LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ?
81WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?)
82 ORDER BY doc.document_id DESC LIMIT ?,? `
83
84 err = o.Raw(sql1, memberId, keyword, keyword).QueryRow(&totalCount)
85 if err != nil {
86 return
87 }
88 _, err = o.Raw(sql2, memberId, keyword, keyword, offset, pageSize).QueryRows(&searchResult)
89 if err != nil {
90 return
91 }
92 }
93 return
94}
95
96//书籍内搜索.
97func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int, page, size int) (docs []*DocumentSearchResult, cnt int, err error) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected