github.com/crspeller/mattermost-server@v0.0.0-20190328001957-a200beb3d111/app/scheme.go (about) 1 // Copyright (c) 2018-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package app 5 6 import ( 7 "net/http" 8 9 "github.com/crspeller/mattermost-server/model" 10 ) 11 12 func (a *App) GetScheme(id string) (*model.Scheme, *model.AppError) { 13 if err := a.IsPhase2MigrationCompleted(); err != nil { 14 return nil, err 15 } 16 17 result := <-a.Srv.Store.Scheme().Get(id) 18 if result.Err != nil { 19 return nil, result.Err 20 } 21 return result.Data.(*model.Scheme), nil 22 } 23 24 func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError) { 25 if err := a.IsPhase2MigrationCompleted(); err != nil { 26 return nil, err 27 } 28 29 result := <-a.Srv.Store.Scheme().GetByName(name) 30 if result.Err != nil { 31 return nil, result.Err 32 } 33 return result.Data.(*model.Scheme), nil 34 } 35 36 func (a *App) GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError) { 37 if err := a.IsPhase2MigrationCompleted(); err != nil { 38 return nil, err 39 } 40 41 return a.GetSchemes(scope, page*perPage, perPage) 42 } 43 44 func (a *App) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) { 45 if err := a.IsPhase2MigrationCompleted(); err != nil { 46 return nil, err 47 } 48 49 result := <-a.Srv.Store.Scheme().GetAllPage(scope, offset, limit) 50 if result.Err != nil { 51 return nil, result.Err 52 } 53 return result.Data.([]*model.Scheme), nil 54 } 55 56 func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) { 57 if err := a.IsPhase2MigrationCompleted(); err != nil { 58 return nil, err 59 } 60 61 // Clear any user-provided values for trusted properties. 62 scheme.DefaultTeamAdminRole = "" 63 scheme.DefaultTeamUserRole = "" 64 scheme.DefaultChannelAdminRole = "" 65 scheme.DefaultChannelUserRole = "" 66 scheme.CreateAt = 0 67 scheme.UpdateAt = 0 68 scheme.DeleteAt = 0 69 70 result := <-a.Srv.Store.Scheme().Save(scheme) 71 if result.Err != nil { 72 return nil, result.Err 73 } 74 return scheme, nil 75 } 76 77 func (a *App) PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError) { 78 if err := a.IsPhase2MigrationCompleted(); err != nil { 79 return nil, err 80 } 81 82 scheme.Patch(patch) 83 scheme, err := a.UpdateScheme(scheme) 84 if err != nil { 85 return nil, err 86 } 87 88 return scheme, err 89 } 90 91 func (a *App) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) { 92 if err := a.IsPhase2MigrationCompleted(); err != nil { 93 return nil, err 94 } 95 96 result := <-a.Srv.Store.Scheme().Save(scheme) 97 if result.Err != nil { 98 return nil, result.Err 99 } 100 return scheme, nil 101 } 102 103 func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) { 104 if err := a.IsPhase2MigrationCompleted(); err != nil { 105 return nil, err 106 } 107 108 result := <-a.Srv.Store.Scheme().Delete(schemeId) 109 if result.Err != nil { 110 return nil, result.Err 111 } 112 return result.Data.(*model.Scheme), nil 113 } 114 115 func (a *App) GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError) { 116 if err := a.IsPhase2MigrationCompleted(); err != nil { 117 return nil, err 118 } 119 120 return a.GetTeamsForScheme(scheme, page*perPage, perPage) 121 } 122 123 func (a *App) GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *model.AppError) { 124 if err := a.IsPhase2MigrationCompleted(); err != nil { 125 return nil, err 126 } 127 128 result := <-a.Srv.Store.Team().GetTeamsByScheme(scheme.Id, offset, limit) 129 if result.Err != nil { 130 return nil, result.Err 131 } 132 return result.Data.([]*model.Team), nil 133 } 134 135 func (a *App) GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError) { 136 if err := a.IsPhase2MigrationCompleted(); err != nil { 137 return nil, err 138 } 139 140 return a.GetChannelsForScheme(scheme, page*perPage, perPage) 141 } 142 143 func (a *App) GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *model.AppError) { 144 if err := a.IsPhase2MigrationCompleted(); err != nil { 145 return nil, err 146 } 147 result := <-a.Srv.Store.Channel().GetChannelsByScheme(scheme.Id, offset, limit) 148 if result.Err != nil { 149 return nil, result.Err 150 } 151 return result.Data.(model.ChannelList), nil 152 } 153 154 func (a *App) IsPhase2MigrationCompleted() *model.AppError { 155 if a.Srv.phase2PermissionsMigrationComplete { 156 return nil 157 } 158 159 if result := <-a.Srv.Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); result.Err != nil { 160 return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, result.Err.Error(), http.StatusNotImplemented) 161 } 162 163 a.Srv.phase2PermissionsMigrationComplete = true 164 165 return nil 166 } 167 168 func (a *App) SchemesIterator(batchSize int) func() []*model.Scheme { 169 offset := 0 170 return func() []*model.Scheme { 171 result := <-a.Srv.Store.Scheme().GetAllPage("", offset, batchSize) 172 if result.Err != nil { 173 return []*model.Scheme{} 174 } 175 offset += batchSize 176 return result.Data.([]*model.Scheme) 177 } 178 }