summaryrefslogtreecommitdiff
path: root/app/finders
Commit message (Collapse)AuthorAgeFilesLines
* remove public field from namespace and refactoringnamespace-clean_upValery Sizov2016-01-042-93/+0
|
* sort milestones by due_dateGreg Smethells2015-12-031-1/+1
|
* Port GitLab EE ProjectsFinder changesgitlab-ee-d39de0ea-backportYorick Peterse2015-11-201-5/+5
| | | | | | | These changes were added in GitLab EE commit d39de0ea91b26b8840195e5674b92c353cc16661. The tests were a bit bugged (they used a non existing group, thus not testing a crucial part) which I only noticed when porting CE changes to EE.
* Merge branch 'emoji_votes' into 'master' Dmitriy Zaporozhets2015-11-191-2/+2
|\ | | | | | | | | | | | | | | | | | | Award Emoji This it first iteration of award emoji feature. We have plan to extend emoji picker by the next release. For now, you can add award by clicking to the emoji picker or posting a regular comment with emoji like ":+1:" and any other. You can post not only emoji that listed in the emoji picker. See merge request !1825
| * css improvementsValery Sizov2015-11-191-2/+2
| |
* | Use a JOIN in IssuableFinder#by_projectYorick Peterse2015-11-191-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using IssuableFinder/IssuesFinder to find issues for multiple projects it's more efficient to use a JOIN + a "WHERE project_id IN" condition opposed to running a sub-query. This change means that when finding issues without labels we're now using the following SQL: SELECT issues.* FROM issues JOIN projects ON projects.id = issues.project_id LEFT JOIN label_links ON label_links.target_type = 'Issue' AND label_links.target_id = issues.id WHERE ( projects.id IN (...) OR projects.visibility_level IN (20, 10) ) AND issues.state IN ('opened','reopened') AND label_links.id IS NULL ORDER BY issues.id DESC; instead of: SELECT issues.* FROM issues LEFT JOIN label_links ON label_links.target_type = 'Issue' AND label_links.target_id = issues.id WHERE issues.project_id IN ( SELECT id FROM projects WHERE id IN (...) OR visibility_level IN (20,10) ) AND issues.state IN ('opened','reopened') AND label_links.id IS NULL ORDER BY issues.id DESC; The big benefit here is that in the last case PostgreSQL can't properly use all available indexes. In particular it ends up performing a sequence scan on the "label_links" table (processing around 290 000 rows). The new query is roughly 2x as fast as the old query.
* | Memoize IssuableFinder#projectsYorick Peterse2015-11-191-3/+3
| | | | | | | | | | | | Since this method's returned data doesn't change between calls on the same IssuableFinder instance we can just memoize this similar to the "project" method.
* | Removed trailing whitespace from IssuableFinderYorick Peterse2015-11-191-2/+2
| |
* | Return internal projects in PersonalProjectsFinderYorick Peterse2015-11-181-1/+5
| | | | | | | | | | When getting the projects of a user we should get the public _and_ internal projects, not just the public ones.
* | Refactor ProjectsFinder to not pluck IDsYorick Peterse2015-11-183-67/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class now uses a UNION (when needed) instead of plucking tens of thousands of project IDs into memory. The tests have also been re-written to ensure all different use cases are tested properly (assuming I didn't forget any cases). The finder has also been broken up into 3 different finder classes: * ContributedProjectsFinder: class for getting the projects a user contributed to. * PersonalProjectsFinder: class for getting the personal projects of a user. * ProjectsFinder: class for getting generic projects visible to a given user. Previously a lot of the logic of these finders was handled directly in the users controller.
* | Refactoed GroupsFinder into two separate classesYorick Peterse2015-11-182-32/+86
|/ | | | | | | | | | | | | | | | | In the previous setup the GroupsFinder class had two distinct tasks: 1. Finding the projects user A could see 2. Finding the projects of user A that user B could see Task two was actually handled outside of the GroupsFinder (in the UsersController) by restricting the returned list of groups to those the viewed user was a member of. Moving all this logic into a single finder proved to be far too complex and confusing, hence there are now two finders: * GroupsFinder: for finding groups a user can see * JoinedGroupsFinder: for finding groups that user A is a member of, restricted to either public groups or groups user B can also see.
* Lets add more tests to Milestones servicesDmitriy Zaporozhets2015-11-161-1/+0
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Refactor global and group milestones logicDmitriy Zaporozhets2015-11-161-0/+13
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Allow groups to appear in the search results if the group owner allows itValery Sizov2015-11-051-28/+29
|
* Rename confusing methodsDouwe Maan2015-10-191-4/+4
|
* Improve performance of filtering issues by milestoneDouwe Maan2015-10-161-30/+33
|
* Improve performance of queriesZeger-Jan van de Weg2015-10-161-28/+46
| | | | Credits to Douwe Maan
* Add project scope to milestone searchZeger-Jan van de Weg2015-10-161-1/+8
|
* Merge remote-tracking branch 'public/trending-projects-performance'Dmitriy Zaporozhets2015-10-081-9/+2
|\
| * Revamp trending projects queryYorick Peterse2015-10-061-9/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the query to use a COUNT nested in an INNER JOIN, instead of a COUNT plus a GROUP BY. There are two reasons for this: 1. Using a COUNT in an INNER JOIN can be quite a bit faster. 2. The use of a GROUP BY means that method calls such as "any?" (and everything else that calls "count") operate on a Hash that counts the amount of notes on a per project basis, instead of just counting the total amount of projects. The query has been moved into Project.trending as its logic is simple enough. As a result of this testing the TrendingProjectsFinder class simply involves testing if the right methods are called, removing the need for setting up database records.
| * Use >= instead of > in TrendingProjectsFinderYorick Peterse2015-10-061-1/+1
| | | | | | | | | | | | By using >= we can ensure we actually get all comments of the past month, instead of the comments of the past month minus the first day in the range.
* | Support filtering by "Any" milestone or issue and fix "No Milestone" and "No ↵Stan Hu2015-10-071-7/+21
|/ | | | | | | | Label" filters Closes #2619 Closes https://github.com/gitlabhq/gitlabhq/issues/9631
* Fix rubocop warnings in appGuilherme Garnier2015-10-031-1/+1
|
* Fix 500 on trending projects if isntance has 100k+ projectsDmitriy Zaporozhets2015-09-181-13/+4
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Improve trending projects finderDmitriy Zaporozhets2015-08-261-5/+13
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Rename NoMilestone to Milestone::NoneRobert Speicher2015-07-061-8/+3
| | | | Also refactors IssuableFinder to avoid redundant title check.
* Allow user to filter by Issues/Merge Requests without a MilestoneRobert Speicher2015-07-061-2/+7
|
* Revert merge request states renamingDmitriy Zaporozhets2015-06-191-9/+7
| | | | | | | | Replaced: * "Accepted" with "Merged" * "Rejected" with "Closed" Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Set milestone on new issue when creating issue from index with milestone ↵Douwe Maan2015-05-272-22/+84
| | | | filter active.
* Add Accepted and Rejected tabs to MR lists.Douwe Maan2015-05-251-0/+4
|
* Group milestones by title in the dashboard and all other issue viewsDominik Sander2015-05-011-2/+3
| | | | | | | | | This groups milestones by title for issue views like it has been done for the milestone dashboard/project overview. Before milestones with the same title would show up multiple times in the filter dropdown and one could only filter per project and milestone. Now the milestone filter is based on the title of the milestone, i.e. all issues marked with the same milestone title are shown.
* Fix tests and unassigned filter for issues. Updated CHANGELOGDmitriy Zaporozhets2015-03-271-1/+1
|
* No magic numbers for issues filteringDmitriy Zaporozhets2015-03-261-3/+5
|
* Merge pull request #8092 from cirosantilli/factor-finder-permsDmitriy Zaporozhets2015-03-021-1/+1
|\ | | | | Factor permission check in issuable finder
| * Factor permission check in issuable finderCiro Santilli2015-01-011-1/+1
| |
* | Fix trending projects orderingDmitriy Zaporozhets2015-02-181-1/+1
| |
* | Add index on order columnsDmitriy Zaporozhets2015-02-061-6/+5
| |
* | Apply default scope to labels and remove one for notesDmitriy Zaporozhets2015-02-051-1/+2
| |
* | Rubocop: indentation fixes Yay!!!Dmitriy Zaporozhets2015-02-021-1/+1
| |
* | Rubocop: Style/CaseIndentation enabledDmitriy Zaporozhets2015-02-021-12/+13
|/
* Add author filter for issues & merge requests pagesDmitriy Zaporozhets2014-12-051-0/+9
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Merge branch 'dashboard_issues_and_mr' into 'master'Dmitriy Zaporozhets2014-10-281-1/+5
|\ | | | | | | | | | | | | | | Dashboard issues and merge request filters Fixes #1597 See merge request !1219
| * Do not filter out issues and merge requests related to user right away.Marin Jankovski2014-10-271-1/+5
| |
* | internal snippets: fix exposing of titleValery Sizov2014-10-241-0/+2
|/
* Admin: user sortingValery Sizov2014-10-131-11/+11
|
* Snippets: public/internal/privateValery Sizov2014-10-091-0/+61
|
* Improve formatting of app/finders/README.mdCiro Santilli2014-10-071-4/+4
|
* Fix finder and tests for new membership modelsDmitriy Zaporozhets2014-09-151-1/+1
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Huge replace of old users_project and users_group referencesDmitriy Zaporozhets2014-09-141-4/+2
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Refactor finders. Prevent circular dependency errorDmitriy Zaporozhets2014-09-023-4/+6
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>