You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

search_record.go 1.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package models
  2. import (
  3. "code.gitea.io/gitea/modules/log"
  4. "code.gitea.io/gitea/modules/timeutil"
  5. "xorm.io/xorm"
  6. )
  7. type SearchRecord struct {
  8. ID int64 `xorm:"pk autoincr"`
  9. //user
  10. Keyword string `xorm:"NOT NULL"`
  11. //
  12. CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
  13. }
  14. func SaveSearchKeywordToDb(keyword string) error {
  15. record := &SearchRecord{
  16. Keyword: keyword,
  17. }
  18. sess := x.NewSession()
  19. defer sess.Close()
  20. _, err := sess.Insert(record)
  21. if err != nil {
  22. log.Info("insert error." + err.Error())
  23. return err
  24. }
  25. return nil
  26. }
  27. func setQueryCondition(sess *xorm.Session, Keyword string, isPull bool, userId int64) {
  28. sess.And("issue.poster_id=?", userId)
  29. sess.And("issue.is_pull=?", isPull)
  30. sess.And("(issue.name like '%" + Keyword + "%' or issue.content like '%" + Keyword + "%')")
  31. sess.Join("INNER", "repository", "issue.repo_id = repository.id").And("repository.is_private = ?", true)
  32. }
  33. func SearchPrivateIssueOrPr(Page int, PageSize int, Keyword string, isPull bool, userId int64) ([]*Issue, int64, error) {
  34. sess := x.NewSession()
  35. defer sess.Close()
  36. setQueryCondition(sess, Keyword, isPull, userId)
  37. count, err := sess.Count(new(Issue))
  38. if err != nil {
  39. return nil, 0, err
  40. }
  41. setQueryCondition(sess, Keyword, isPull, userId)
  42. sess.Desc("issue.created_unix")
  43. sess.Limit(PageSize, (Page-1)*PageSize)
  44. issues := make([]*Issue, 0)
  45. if err := sess.Find(&issues); err != nil {
  46. return nil, 0, err
  47. } else {
  48. return issues, count, nil
  49. }
  50. }