@ -196,7 +196,7 @@ type SearchOptions struct {
RepoID int64
RepoID int64
Page int
Page int
IsClosed util . OptionalBool
IsClosed util . OptionalBool
SortType string
OrderBy db . SearchOrderBy
Type Type
Type Type
}
}
@ -226,26 +226,28 @@ func CountProjects(ctx context.Context, opts SearchOptions) (int64, error) {
return db . GetEngine ( ctx ) . Where ( opts . toConds ( ) ) . Count ( new ( Project ) )
return db . GetEngine ( ctx ) . Where ( opts . toConds ( ) ) . Count ( new ( Project ) )
}
}
func GetSearchOrderByBySortType ( sortType string ) db . SearchOrderBy {
switch sortType {
case "oldest" :
return db . SearchOrderByOldest
case "recentupdate" :
return db . SearchOrderByRecentUpdated
case "leastupdate" :
return db . SearchOrderByLeastUpdated
default :
return db . SearchOrderByNewest
}
}
// FindProjects returns a list of all projects that have been created in the repository
// FindProjects returns a list of all projects that have been created in the repository
func FindProjects ( ctx context . Context , opts SearchOptions ) ( [ ] * Project , int64 , error ) {
func FindProjects ( ctx context . Context , opts SearchOptions ) ( [ ] * Project , int64 , error ) {
e := db . GetEngine ( ctx ) . Where ( opts . toConds ( ) )
e := db . GetEngine ( ctx ) . Where ( opts . toConds ( ) ) . OrderBy ( opts . OrderBy . String ( ) )
projects := make ( [ ] * Project , 0 , setting . UI . IssuePagingNum )
projects := make ( [ ] * Project , 0 , setting . UI . IssuePagingNum )
if opts . Page > 0 {
if opts . Page > 0 {
e = e . Limit ( setting . UI . IssuePagingNum , ( opts . Page - 1 ) * setting . UI . IssuePagingNum )
e = e . Limit ( setting . UI . IssuePagingNum , ( opts . Page - 1 ) * setting . UI . IssuePagingNum )
}
}
switch opts . SortType {
case "oldest" :
e . Desc ( "created_unix" )
case "recentupdate" :
e . Desc ( "updated_unix" )
case "leastupdate" :
e . Asc ( "updated_unix" )
default :
e . Asc ( "created_unix" )
}
count , err := e . FindAndCount ( & projects )
count , err := e . FindAndCount ( & projects )
return projects , count , err
return projects , count , err
}
}