chore(projects) use a slice again

This commit is contained in:
kolaente 2022-12-29 22:11:07 +01:00
parent 7d5e687236
commit 4c884246df
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
1 changed files with 14 additions and 15 deletions

View File

@ -168,8 +168,7 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
if err != nil { if err != nil {
return nil, 0, 0, err return nil, 0, 0, err
} }
projects := map[int64]*Project{} projects := []*Project{project}
projects[project.ID] = project
err = addProjectDetails(s, projects, a) err = addProjectDetails(s, projects, a)
return projects, 0, 0, err return projects, 0, 0, err
} }
@ -179,7 +178,7 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
return nil, 0, 0, err return nil, 0, 0, err
} }
allProjects, resultCount, totalItems, err := getRawProjectsForUser( prs, resultCount, totalItems, err := getRawProjectsForUser(
s, s,
&projectOptions{ &projectOptions{
search: search, search: search,
@ -192,6 +191,12 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
return nil, 0, 0, err return nil, 0, 0, err
} }
// FIXME: I wonder if we could get rid of this extra loop?
allProjects := make(map[int64]*Project, len(prs))
for _, p := range prs {
allProjects[p.ID] = p
}
///////////////// /////////////////
// Saved Filters // Saved Filters
@ -206,7 +211,7 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
///////////////// /////////////////
// Add project details (favorite state, among other things) // Add project details (favorite state, among other things)
err = addProjectDetails(s, allProjects, a) err = addProjectDetails(s, prs, a)
if err != nil { if err != nil {
return return
} }
@ -214,7 +219,6 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
////////////////////////// //////////////////////////
// Putting it all together // Putting it all together
var projects []*Project
for _, p := range allProjects { for _, p := range allProjects {
if p.ParentProjectID != 0 { if p.ParentProjectID != 0 {
if allProjects[p.ParentProjectID].ChildProjects == nil { if allProjects[p.ParentProjectID].ChildProjects == nil {
@ -226,10 +230,9 @@ func (p *Project) ReadAll(s *xorm.Session, a web.Auth, search string, page int,
// The projects variable will contain all projects which have no parents // The projects variable will contain all projects which have no parents
// And because we're using the same pointers for everything, those will contain child projects // And because we're using the same pointers for everything, those will contain child projects
projects = append(projects, p)
} }
return projects, resultCount, totalItems, err return prs, resultCount, totalItems, err
} }
// ReadOne gets one project by its ID // ReadOne gets one project by its ID
@ -465,7 +468,7 @@ func getAllProjectsForUser(s *xorm.Session, userID int64, parentProjectIDs []int
} }
// Gets the projects with their children without any tasks // Gets the projects with their children without any tasks
func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects map[int64]*Project, resultCount int, totalItems int64, err error) { func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects []*Project, resultCount int, totalItems int64, err error) {
fullUser, err := user.GetUserByID(s, opts.user.ID) fullUser, err := user.GetUserByID(s, opts.user.ID)
if err != nil { if err != nil {
return nil, 0, 0, err return nil, 0, 0, err
@ -481,12 +484,7 @@ func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects map[
return nil, 0, totalItems, nil return nil, 0, totalItems, nil
} }
projects = make(map[int64]*Project, len(allProjects)) return allProjects, len(allProjects), totalItems, err
for _, p := range allProjects {
projects[p.ID] = p
}
return projects, len(allProjects), totalItems, err
} }
func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersProject *Project, err error) { func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersProject *Project, err error) {
@ -501,6 +499,7 @@ func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersProje
savedFiltersPseudoParentProject := SavedFiltersPseudoProject savedFiltersPseudoParentProject := SavedFiltersPseudoProject
savedFiltersPseudoParentProject.OwnerID = doer.ID savedFiltersPseudoParentProject.OwnerID = doer.ID
savedFiltersProject = &Project{}
*savedFiltersProject = *savedFiltersPseudoParentProject *savedFiltersProject = *savedFiltersPseudoParentProject
savedFiltersProject.ChildProjects = make([]*Project, 0, len(savedFilters)) savedFiltersProject.ChildProjects = make([]*Project, 0, len(savedFilters))
@ -515,7 +514,7 @@ func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersProje
} }
// addProjectDetails adds owner user objects and project tasks to all projects in the slice // addProjectDetails adds owner user objects and project tasks to all projects in the slice
func addProjectDetails(s *xorm.Session, projects map[int64]*Project, a web.Auth) (err error) { func addProjectDetails(s *xorm.Session, projects []*Project, a web.Auth) (err error) {
if len(projects) == 0 { if len(projects) == 0 {
return return
} }