fix: bypass Typesense in user export (#1385)

This commit is contained in:
kolaente 2025-09-02 15:49:17 +02:00 committed by GitHub
parent 7dafd07879
commit 15ea38183c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 49 additions and 4 deletions

View File

@ -36,6 +36,7 @@ import (
"code.vikunja.io/api/pkg/user"
"code.vikunja.io/api/pkg/utils"
"code.vikunja.io/api/pkg/version"
"code.vikunja.io/api/pkg/web"
"xorm.io/xorm"
)
@ -127,6 +128,53 @@ func ExportUserData(s *xorm.Session, u *user.User) (err error) {
})
}
func getRawTasksForExport(s *xorm.Session, projectIDs []int64, a web.Auth) (tasks []*Task, err error) {
if len(projectIDs) == 0 {
return []*Task{}, nil
}
opts := &taskSearchOptions{
projectIDs: projectIDs,
page: 0,
perPage: -1,
sortby: []*sortParam{{
sortBy: taskPropertyID,
orderBy: orderAscending,
}},
}
hasFavoritesProject := false
for _, id := range projectIDs {
if id == FavoritesPseudoProject.ID {
hasFavoritesProject = true
break
}
}
var dbSearcher taskSearcher = &dbTaskSearcher{
s: s,
a: a,
hasFavoritesProject: hasFavoritesProject,
}
tasks, _, err = dbSearcher.Search(opts)
if err != nil {
return nil, err
}
taskMap := make(map[int64]*Task, len(tasks))
for _, t := range tasks {
taskMap[t.ID] = t
}
err = addMoreInfoToTasks(s, taskMap, a, nil, nil)
if err != nil {
return nil, err
}
return tasks, nil
}
func exportProjectsAndTasks(s *xorm.Session, u *user.User, wr *zip.Writer) (taskIDs []int64, err error) {
// Get all projects
@ -179,10 +227,7 @@ func exportProjectsAndTasks(s *xorm.Session, u *user.User, wr *zip.Writer) (task
viewIDs = append(viewIDs, v.ID)
}
tasks, _, _, err := getTasksForProjects(s, rawProjects, u, &taskSearchOptions{
page: 0,
perPage: -1,
}, nil)
tasks, err := getRawTasksForExport(s, projectIDs, u)
if err != nil {
return taskIDs, err
}