SetRepoPerms does a full update to which users have which level of access to given repository. Keys of the "accessMap" are user IDs.
(ctx context.Context, repoID int64, accessMap map[int64]AccessMode)
| 111 | // SetRepoPerms does a full update to which users have which level of access to |
| 112 | // given repository. Keys of the "accessMap" are user IDs. |
| 113 | func (s *PermissionsStore) SetRepoPerms(ctx context.Context, repoID int64, accessMap map[int64]AccessMode) error { |
| 114 | records := make([]*Access, 0, len(accessMap)) |
| 115 | for userID, mode := range accessMap { |
| 116 | records = append(records, &Access{ |
| 117 | UserID: userID, |
| 118 | RepoID: repoID, |
| 119 | Mode: mode, |
| 120 | }) |
| 121 | } |
| 122 | |
| 123 | return s.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { |
| 124 | err := tx.Where("repo_id = ?", repoID).Delete(new(Access)).Error |
| 125 | if err != nil { |
| 126 | return err |
| 127 | } |
| 128 | |
| 129 | return tx.Create(&records).Error |
| 130 | }) |
| 131 | } |