feat(projects): return a favorites pseudo project when the user has favorite tasks

This commit is contained in:
kolaente 2023-03-27 16:22:44 +02:00
parent b482664d82
commit 53b2ade5bb
Signed by untrusted user: konrad
GPG Key ID: F40E70337AB24C9B
1 changed files with 23 additions and 16 deletions

View File

@ -117,15 +117,6 @@ var SharedProjectsPseudoProject = &Project{
Updated: time.Now(),
}
// FavoriteProjectsPseudoProject is a pseudo parent project used to hold favorite projects and tasks
var FavoriteProjectsPseudoProject = &Project{
ID: -2,
Title: "Favorites",
Description: "Favorite projects and tasks.",
Created: time.Now(),
Updated: time.Now(),
}
// SavedFiltersPseudoProject is a pseudo parent project used to hold saved filters
var SavedFiltersPseudoProject = &Project{
ID: -3,
@ -137,13 +128,13 @@ var SavedFiltersPseudoProject = &Project{
// FavoritesPseudoProject holds all tasks marked as favorites
var FavoritesPseudoProject = Project{
ID: -1,
Title: "Favorites",
Description: "This project has all tasks marked as favorites.",
ParentProjectID: FavoriteProjectsPseudoProject.ID,
IsFavorite: true,
Created: time.Now(),
Updated: time.Now(),
ID: -1,
Title: "Favorites",
Description: "This project has all tasks marked as favorites.",
IsFavorite: true,
Position: -1,
Created: time.Now(),
Updated: time.Now(),
}
// ReadAll gets all projects a user has access to
@ -486,6 +477,22 @@ func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects []*P
return
}
favoriteCount, err := s.
Where(builder.And(
builder.Eq{"user_id": opts.user.ID},
builder.Eq{"kind": FavoriteKindTask},
)).
Count(&Favorite{})
if err != nil {
return
}
if favoriteCount > 0 {
favoritesProject := &Project{}
*favoritesProject = FavoritesPseudoProject
allProjects = append(allProjects, favoritesProject)
}
if len(allProjects) == 0 {
return nil, 0, totalItems, nil
}