1
0
mirror of https://github.com/go-gitea/gitea.git synced 2024-12-04 14:46:57 -05:00
gitea/models/issues
Jason Song beb71f5ef6
Include public repos in doer's dashboard for issue search (#28304)
It will fix #28268 .

<img width="1313" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/cb1e07d5-7a12-4691-a054-8278ba255bfc">

<img width="1318" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/4fd60820-97f1-4c2c-a233-d3671a5039e9">

## ⚠️ BREAKING ⚠️

But need to give up some features:

<img width="1312" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/281c0d51-0e7d-473f-bbed-216e2f645610">

However, such abandonment may fix #28055 .

## Backgroud

When the user switches the dashboard context to an org, it means they
want to search issues in the repos that belong to the org. However, when
they switch to themselves, it means all repos they can access because
they may have created an issue in a public repo that they don't own.

<img width="286" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/182dcd5b-1c20-4725-93af-96e8dfae5b97">

It's a confusing design. Think about this: What does "In your
repositories" mean when the user switches to an org? Repos belong to the
user or the org?

Whatever, it has been broken by #26012 and its following PRs. After the
PR, it searches for issues in repos that the dashboard context user owns
or has been explicitly granted access to, so it causes #28268.

## How to fix it

It's not really difficult to fix it. Just extend the repo scope to
search issues when the dashboard context user is the doer. Since the
user may create issues or be mentioned in any public repo, we can just
set `AllPublic` to true, which is already supported by indexers. The DB
condition will also support it in this PR.

But the real difficulty is how to count the search results grouped by
repos. It's something like "search issues with this keyword and those
filters, and return the total number and the top results. **Then, group
all of them by repo and return the counts of each group.**"

<img width="314" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/5206eb20-f8f5-49b9-b45a-1be2fcf679f4">

Before #26012, it was being done in the DB, but it caused the results to
be incomplete (see the description of #26012).

And to keep this, #26012 implement it in an inefficient way, just count
the issues by repo one by one, so it cannot work when `AllPublic` is
true because it's almost impossible to do this for all public repos.


1bfcdeef4c/modules/indexer/issues/indexer.go (L318-L338)

## Give up unnecessary features

We may can resovle `TODO: use "group by" of the indexer engines to
implement it`, I'm sure it can be done with Elasticsearch, but IIRC,
Bleve and Meilisearch don't support "group by".

And the real question is, does it worth it? Why should we need to know
the counts grouped by repos?

Let me show you my search dashboard on gitea.com.

<img width="1304" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/2bca2d46-6c71-4de1-94cb-0c9af27c62ff">

I never think the long repo list helps anything.

And if we agree to abandon it, things will be much easier. That is this
PR.

## TODO

I know it's important to filter by repos when searching issues. However,
it shouldn't be the way we have it now. It could be implemented like
this.

<img width="1316" alt="image"
src="https://github.com/go-gitea/gitea/assets/9418365/99ee5f21-cbb5-4dfe-914d-cb796cb79fbe">

The indexers support it well now, but it requires some frontend work,
which I'm not good at. So, I think someone could help do that in another
PR and merge this one to fix the bug first.

Or please block this PR and help to complete it.

Finally, "Switch dashboard context" is also a design that needs
improvement. In my opinion, it can be accomplished by adding filtering
conditions instead of "switching".
2023-12-07 13:26:18 +08:00
..
assignees_test.go Even more db.DefaultContext refactor (#27352) 2023-10-03 10:30:41 +00:00
assignees.go Make more functions use ctx instead of db.DefaultContext (#24068) 2023-04-14 14:18:28 -04:00
comment_code.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
comment_list.go Add logs for data broken of comment review (#27326) 2023-09-29 02:31:36 +00:00
comment_test.go More db.DefaultContext refactor (#27265) 2023-09-29 12:12:54 +00:00
comment.go Fix comment permissions (#28213) 2023-11-25 17:21:21 +00:00
content_history_test.go Fix comment permissions (#28213) 2023-11-25 17:21:21 +00:00
content_history.go Fix comment permissions (#28213) 2023-11-25 17:21:21 +00:00
dependency_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
dependency.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
issue_index.go Another round of db.DefaultContext refactor (#27103) 2023-09-25 13:17:37 +00:00
issue_label_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
issue_label.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
issue_list_test.go Add context parameter to some database functions (#26055) 2023-07-22 22:14:27 +08:00
issue_list.go Add context parameter to some database functions (#26055) 2023-07-22 22:14:27 +08:00
issue_lock.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
issue_project.go Clean some functions about project issue (#27705) 2023-10-20 14:01:25 +02:00
issue_search.go Include public repos in doer's dashboard for issue search (#28304) 2023-12-07 13:26:18 +08:00
issue_stats.go Another round of db.DefaultContext refactor (#27103) 2023-09-25 13:17:37 +00:00
issue_test.go Show total TrackedTime on issue/pull/milestone lists (#26672) 2023-10-19 14:08:31 +00:00
issue_update.go Don't use subselect in DeleteIssuesByRepoID (#27332) 2023-10-03 08:17:28 +00:00
issue_user_test.go Fix bug with sqlite load read (#26305) 2023-08-05 10:40:27 +08:00
issue_user.go Add index to issue_user.issue_id (#27154) 2023-09-21 01:30:48 +00:00
issue_watch_test.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
issue_watch.go Even more db.DefaultContext refactor (#27352) 2023-10-03 10:30:41 +00:00
issue_xref_test.go Replace 'userxx' with 'orgxx' in all test files when the user type is org (#27052) 2023-09-14 02:59:53 +00:00
issue_xref.go More db.DefaultContext refactor (#27265) 2023-09-29 12:12:54 +00:00
issue.go Display issue task list on project cards (#27865) 2023-11-02 11:42:02 +01:00
label_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
label.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
main_test.go make writing main test easier (#27270) 2023-09-28 01:38:53 +00:00
milestone_list.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
milestone_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
milestone.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
pull_list.go More refactoring of db.DefaultContext (#27083) 2023-09-15 06:13:19 +00:00
pull_test.go Penultimate round of db.DefaultContext refactor (#27414) 2023-10-11 04:24:07 +00:00
pull.go Replace -1 with GhostUserID (#27703) 2023-10-20 14:43:08 +00:00
reaction_test.go Another round of db.DefaultContext refactor (#27103) 2023-09-25 13:17:37 +00:00
reaction.go Another round of db.DefaultContext refactor (#27103) 2023-09-25 13:17:37 +00:00
review_list.go Another round of db.DefaultContext refactor (#27103) 2023-09-25 13:17:37 +00:00
review_test.go Fix 500 when deleting a dismissed review (#27903) 2023-11-05 13:25:40 +00:00
review.go Fix 500 when deleting a dismissed review (#27903) 2023-11-05 13:25:40 +00:00
stopwatch_test.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
stopwatch.go Next round of db.DefaultContext refactor (#27089) 2023-09-16 14:39:12 +00:00
tracked_time_test.go Show total TrackedTime on issue/pull/milestone lists (#26672) 2023-10-19 14:08:31 +00:00
tracked_time.go Show total TrackedTime on issue/pull/milestone lists (#26672) 2023-10-19 14:08:31 +00:00