• Yorick Peterse's avatar
    Refactor ProjectsFinder to not pluck IDs · fbcf3bd3
    Yorick Peterse authored
    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.
    fbcf3bd3
personal_projects_finder_spec.rb 823 Bytes