1. 09 Jan, 2017 37 commits
  2. 08 Jan, 2017 3 commits
    • Ryan Harris's avatar
      63f51a74
    • Vincent Wong's avatar
      Record and show last used date of SSH Keys · b6df93a5
      Vincent Wong authored
      Addresses: Issue #13810
      
      1. Adds a last_used_at attribute to the Key table/model
      2. Update a key's last_used_at whenever it gets used
      3. Display how long ago an ssh key was last used
      b6df93a5
    • Yorick Peterse's avatar
      Remove the project_authorizations.id column · de321fbb
      Yorick Peterse authored
      This column used to be a 32 bits integer, allowing for only a maximum of
      2 147 483 647 rows. Given enough users one can hit this limit pretty
      quickly, as was the case for GitLab.com.
      
      Changing this type to bigint (= 64 bits) would give us more space, but
      we'd eventually hit the same limit given enough users and projects. A
      much more sustainable solution is to simply drop the "id" column.
      
      There were only 2 lines of code depending on this column being present,
      and neither truly required it to be present. Instead the code now uses
      the "project_id" column combined with the "user_id" column. This means
      that instead of something like this:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND id = Y;
      
      We now run the following when removing rows:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND project_id = Y;
      
      Since both user_id and project_id are indexed this should not slow down
      the DELETE query.
      
      This commit also removes the "dependent: destroy" clause from the
      "project_authorizations" relation in the User and Project models.
      Keeping this prevents Rails from being able to remove data as it relies
      on an "id" column being present. Since the "project_authorizations"
      table has proper foreign keys set up (with cascading removals) we don't
      need to depend on any Rails logic.
      de321fbb