chore(projects) use a slice again
This commit is contained in:
parent
01723148e8
commit
3e8d1b3667
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user