MM-21157: Triggers role sync when a syncable is linked, unlinked, or updated. (#13432)

* MM-20644: Add users to teams as a SchemeAdmin based on a new configuration field on GroupTeams and GroupChannels records.

* MM-20644: Adds SchemeAdmin to mapping of the GroupSyncable struct fields.

* MM-2064: Adds test to ensure SchemeAdmin field value is mapped.

* MM-20644: Adds missing index creation for fresh DBs.

* MM-20644: Duplicates UpdateMembersRole across Team and Channel stores. Adds tests.

* MM-20644: Fixes some old method name references.

* MM-20644: Moves variable declaration; removes Println statement.

* MM-21157: Triggers role sync when a syncable is linked, unlinked, or updated.

* MM-20644: Use a SQL query instead of two to update Team and Channel members.

* MM-20644: Fixes tests; updates query.

* MM-21157: Removes second invocation of function because of refactor that performs it all in a single query.

* MM-21157: Switches a few queries to Squirrel.

* MM-21157: SQL-formats some strings.

* MM-21157: Select with list.

* MM-21157: Converts some more sql to squirrel.

* MM-21157: Fix incorrect conflict resolutions.

* MM-21157: Fix incorrect conflict resolutions.

* MM-21157: Adds missing mocks.

* MM-21157: Clears cache upon syncing roles.

Co-authored-by: mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Martin Kraft
2020-01-20 09:10:25 -05:00
коммит произвёл GitHub
родитель 3865bc501e
Коммит 50e9aa01c3
13 изменённых файлов: 887 добавлений и 303 удалений

Просмотреть файл

@@ -192,6 +192,10 @@ func linkGroupSyncable(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
// Not awaiting completion because the group sync job executes the same procedure—but for all syncables—and
// persists the execution status to the jobs table.
go c.App.SyncRolesAndMembership(syncableID, syncableType)
w.WriteHeader(http.StatusCreated)
b, marshalErr := json.Marshal(groupSyncable)
@@ -340,6 +344,10 @@ func patchGroupSyncable(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
// Not awaiting completion because the group sync job executes the same procedure—but for all syncables—and
// persists the execution status to the jobs table.
go c.App.SyncRolesAndMembership(syncableID, syncableType)
b, marshalErr := json.Marshal(groupSyncable)
if marshalErr != nil {
c.Err = model.NewAppError("Api4.patchGroupSyncable", "api.marshal_error", nil, marshalErr.Error(), http.StatusInternalServerError)
@@ -384,6 +392,10 @@ func unlinkGroupSyncable(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
// Not awaiting completion because the group sync job executes the same procedure—but for all syncables—and
// persists the execution status to the jobs table.
go c.App.SyncRolesAndMembership(syncableID, syncableType)
ReturnStatusOK(w)
}