add log filters for project group, project and item.
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-08-09 18:58:00 +02:00
parent 7973373419
commit f7d7d99c83
12 changed files with 177 additions and 33 deletions
+19 -6
View File
@@ -29,26 +29,39 @@ func (r *logRepository) Find(ctx context.Context, id string) (*models.Log, error
func (r *logRepository) List(ctx context.Context, filter models.LogFilter) ([]*models.Log, error) {
sq := squirrel.Select("log.*").From("log").PlaceholderFormat(squirrel.Dollar)
sq = sq.Where(squirrel.Eq{"user_id": filter.UserID})
sq = sq.Where(squirrel.Eq{"log.user_id": filter.UserID})
if len(filter.TaskIDs) > 0 {
sq = sq.Where(squirrel.Eq{"task_id": filter.TaskIDs})
sq = sq.Where(squirrel.Eq{"log.task_id": filter.TaskIDs})
}
if len(filter.ItemIDs) > 0 {
sq = sq.Where(squirrel.Or{
squirrel.Eq{"item_id": filter.ItemIDs},
squirrel.Eq{"secondary_item_id": filter.ItemIDs},
squirrel.Eq{"log.item_id": filter.ItemIDs},
squirrel.Eq{"log.secondary_item_id": filter.ItemIDs},
})
}
if filter.MinTime != nil {
sq = sq.Where(squirrel.GtOrEq{
"logged_time": *filter.MinTime,
"log.logged_time": *filter.MinTime,
})
}
if filter.MaxTime != nil {
sq = sq.Where(squirrel.LtOrEq{
"logged_time": *filter.MaxTime,
"log.logged_time": *filter.MaxTime,
})
}
if len(filter.ProjectIDs) > 0 || len(filter.ProjectGroupIDs) > 0 {
sq = sq.InnerJoin("task AS t ON t.task_id = log.task_id")
sq = sq.InnerJoin("project AS p ON p.project_id = t.project_id")
if len(filter.ProjectGroupIDs) > 0 {
sq = sq.InnerJoin("project_group AS pg ON pg.project_group_id = p.project_group_id")
sq = sq.Where(squirrel.Eq{"pg.project_group_id": filter.ProjectGroupIDs})
}
if len(filter.ProjectIDs) > 0 {
sq = sq.Where(squirrel.Eq{"p.project_id": filter.ProjectIDs})
}
}
sq = sq.OrderBy("logged_time")