|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package models
-
- import (
- "code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/modules/timeutil"
- "xorm.io/xorm"
- )
-
- type SearchRecord struct {
- ID int64 `xorm:"pk autoincr"`
- //user
- Keyword string `xorm:"NOT NULL"`
- //
- CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
- }
-
- func SaveSearchKeywordToDb(keyword string) error {
- record := &SearchRecord{
- Keyword: keyword,
- }
- sess := x.NewSession()
- defer sess.Close()
- _, err := sess.Insert(record)
- if err != nil {
- log.Info("insert error." + err.Error())
- return err
- }
- return nil
- }
-
- func setIssueQueryCondition(sess *xorm.Session, Keyword string, isPull bool, userId int64) {
- sess.And("issue.poster_id=?", userId)
- sess.And("issue.is_pull=?", isPull)
- sess.And("(issue.name like '%" + Keyword + "%' or issue.content like '%" + Keyword + "%')")
- sess.Join("INNER", "repository", "issue.repo_id = repository.id").And("repository.is_private = ?", true)
- }
-
- func SearchPrivateIssueOrPr(Page int, PageSize int, Keyword string, isPull bool, userId int64) ([]*Issue, int64, error) {
- sess := x.NewSession()
- defer sess.Close()
- setIssueQueryCondition(sess, Keyword, isPull, userId)
- count, err := sess.Count(new(Issue))
- if err != nil {
- return nil, 0, err
- }
-
- setIssueQueryCondition(sess, Keyword, isPull, userId)
- sess.Desc("issue.created_unix")
- sess.Limit(PageSize, (Page-1)*PageSize)
- issues := make([]*Issue, 0)
- if err := sess.Find(&issues); err != nil {
- return nil, 0, err
- } else {
- return issues, count, nil
- }
- }
-
- func setDataSetQueryCondition(sess *xorm.Session, Keyword string, userId int64) {
- sess.And("dataset.user_id=?", userId)
- sess.And("(dataset.title like '%" + Keyword + "%' or dataset.description like '%" + Keyword + "%')")
- sess.Join("INNER", "repository", "dataset.repo_id = repository.id").And("repository.is_private = ?", true)
- }
-
- func SearchDatasetBySQL(Page int, PageSize int, Keyword string, userId int64) ([]*Dataset, int64, error) {
- sess := x.NewSession()
- defer sess.Close()
- setDataSetQueryCondition(sess, Keyword, userId)
- count, err := sess.Count(new(Dataset))
- if err != nil {
- return nil, 0, err
- }
-
- setDataSetQueryCondition(sess, Keyword, userId)
- sess.Desc("dataset.created_unix")
- sess.Limit(PageSize, (Page-1)*PageSize)
- datasets := make([]*Dataset, 0)
- if err := sess.Find(&datasets); err != nil {
- return nil, 0, err
- } else {
- return datasets, count, nil
- }
-
- }
|