github.com/pafomin-at-avito/mattermost-server@v5.11.1+incompatible/store/store.go (about)

     1  // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package store
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/mattermost/mattermost-server/model"
    10  )
    11  
    12  type StoreResult struct {
    13  	Data interface{}
    14  	Err  *model.AppError
    15  }
    16  
    17  type StoreChannel chan StoreResult
    18  
    19  func Do(f func(result *StoreResult)) StoreChannel {
    20  	storeChannel := make(StoreChannel, 1)
    21  	go func() {
    22  		result := StoreResult{}
    23  		f(&result)
    24  		storeChannel <- result
    25  		close(storeChannel)
    26  	}()
    27  	return storeChannel
    28  }
    29  
    30  func Must(sc StoreChannel) interface{} {
    31  	r := <-sc
    32  	if r.Err != nil {
    33  
    34  		time.Sleep(time.Second)
    35  		panic(r.Err)
    36  	}
    37  
    38  	return r.Data
    39  }
    40  
    41  type Store interface {
    42  	Team() TeamStore
    43  	Channel() ChannelStore
    44  	Post() PostStore
    45  	User() UserStore
    46  	Bot() BotStore
    47  	Audit() AuditStore
    48  	ClusterDiscovery() ClusterDiscoveryStore
    49  	Compliance() ComplianceStore
    50  	Session() SessionStore
    51  	OAuth() OAuthStore
    52  	System() SystemStore
    53  	Webhook() WebhookStore
    54  	Command() CommandStore
    55  	CommandWebhook() CommandWebhookStore
    56  	Preference() PreferenceStore
    57  	License() LicenseStore
    58  	Token() TokenStore
    59  	Emoji() EmojiStore
    60  	Status() StatusStore
    61  	FileInfo() FileInfoStore
    62  	Reaction() ReactionStore
    63  	Role() RoleStore
    64  	Scheme() SchemeStore
    65  	Job() JobStore
    66  	UserAccessToken() UserAccessTokenStore
    67  	ChannelMemberHistory() ChannelMemberHistoryStore
    68  	Plugin() PluginStore
    69  	TermsOfService() TermsOfServiceStore
    70  	Group() GroupStore
    71  	UserTermsOfService() UserTermsOfServiceStore
    72  	LinkMetadata() LinkMetadataStore
    73  	MarkSystemRanUnitTests()
    74  	Close()
    75  	LockToMaster()
    76  	UnlockFromMaster()
    77  	DropAllTables()
    78  	TotalMasterDbConnections() int
    79  	TotalReadDbConnections() int
    80  	TotalSearchDbConnections() int
    81  }
    82  
    83  type TeamStore interface {
    84  	Save(team *model.Team) StoreChannel
    85  	Update(team *model.Team) StoreChannel
    86  	UpdateDisplayName(name string, teamId string) StoreChannel
    87  	Get(id string) StoreChannel
    88  	GetByName(name string) StoreChannel
    89  	SearchByName(name string) StoreChannel
    90  	SearchAll(term string) StoreChannel
    91  	SearchOpen(term string) StoreChannel
    92  	SearchPrivate(term string) StoreChannel
    93  	GetAll() StoreChannel
    94  	GetAllPage(offset int, limit int) StoreChannel
    95  	GetAllPrivateTeamListing() StoreChannel
    96  	GetAllPrivateTeamPageListing(offset int, limit int) StoreChannel
    97  	GetAllTeamListing() StoreChannel
    98  	GetAllTeamPageListing(offset int, limit int) StoreChannel
    99  	GetTeamsByUserId(userId string) StoreChannel
   100  	GetByInviteId(inviteId string) StoreChannel
   101  	PermanentDelete(teamId string) StoreChannel
   102  	AnalyticsTeamCount() StoreChannel
   103  	SaveMember(member *model.TeamMember, maxUsersPerTeam int) StoreChannel
   104  	UpdateMember(member *model.TeamMember) StoreChannel
   105  	GetMember(teamId string, userId string) StoreChannel
   106  	GetMembers(teamId string, offset int, limit int) StoreChannel
   107  	GetMembersByIds(teamId string, userIds []string) StoreChannel
   108  	GetTotalMemberCount(teamId string) StoreChannel
   109  	GetActiveMemberCount(teamId string) StoreChannel
   110  	GetTeamsForUser(userId string) StoreChannel
   111  	GetTeamsForUserWithPagination(userId string, page, perPage int) StoreChannel
   112  	GetChannelUnreadsForAllTeams(excludeTeamId, userId string) StoreChannel
   113  	GetChannelUnreadsForTeam(teamId, userId string) StoreChannel
   114  	RemoveMember(teamId string, userId string) StoreChannel
   115  	RemoveAllMembersByTeam(teamId string) StoreChannel
   116  	RemoveAllMembersByUser(userId string) StoreChannel
   117  	UpdateLastTeamIconUpdate(teamId string, curTime int64) StoreChannel
   118  	GetTeamsByScheme(schemeId string, offset int, limit int) StoreChannel
   119  	MigrateTeamMembers(fromTeamId string, fromUserId string) StoreChannel
   120  	ResetAllTeamSchemes() StoreChannel
   121  	ClearAllCustomRoleAssignments() StoreChannel
   122  	AnalyticsGetTeamCountForScheme(schemeId string) StoreChannel
   123  	GetAllForExportAfter(limit int, afterId string) StoreChannel
   124  	GetTeamMembersForExport(userId string) StoreChannel
   125  }
   126  
   127  type ChannelStore interface {
   128  	Save(channel *model.Channel, maxChannelsPerTeam int64) StoreChannel
   129  	CreateDirectChannel(userId string, otherUserId string) StoreChannel
   130  	SaveDirectChannel(channel *model.Channel, member1 *model.ChannelMember, member2 *model.ChannelMember) StoreChannel
   131  	Update(channel *model.Channel) StoreChannel
   132  	Get(id string, allowFromCache bool) StoreChannel
   133  	InvalidateChannel(id string)
   134  	InvalidateChannelByName(teamId, name string)
   135  	GetFromMaster(id string) StoreChannel
   136  	Delete(channelId string, time int64) StoreChannel
   137  	Restore(channelId string, time int64) StoreChannel
   138  	SetDeleteAt(channelId string, deleteAt int64, updateAt int64) StoreChannel
   139  	PermanentDeleteByTeam(teamId string) StoreChannel
   140  	PermanentDelete(channelId string) StoreChannel
   141  	GetByName(team_id string, name string, allowFromCache bool) StoreChannel
   142  	GetByNames(team_id string, names []string, allowFromCache bool) StoreChannel
   143  	GetByNameIncludeDeleted(team_id string, name string, allowFromCache bool) StoreChannel
   144  	GetDeletedByName(team_id string, name string) StoreChannel
   145  	GetDeleted(team_id string, offset int, limit int) StoreChannel
   146  	GetChannels(teamId string, userId string, includeDeleted bool) StoreChannel
   147  	GetAllChannels(page, perPage int, includeDeleted bool) StoreChannel
   148  	GetMoreChannels(teamId string, userId string, offset int, limit int) StoreChannel
   149  	GetPublicChannelsForTeam(teamId string, offset int, limit int) StoreChannel
   150  	GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) StoreChannel
   151  	GetChannelCounts(teamId string, userId string) StoreChannel
   152  	GetTeamChannels(teamId string) StoreChannel
   153  	GetAll(teamId string) StoreChannel
   154  	GetChannelsByIds(channelIds []string) StoreChannel
   155  	GetForPost(postId string) StoreChannel
   156  	SaveMember(member *model.ChannelMember) StoreChannel
   157  	UpdateMember(member *model.ChannelMember) StoreChannel
   158  	GetMembers(channelId string, offset, limit int) StoreChannel
   159  	GetMember(channelId string, userId string) StoreChannel
   160  	GetChannelMembersTimezones(channelId string) StoreChannel
   161  	GetAllChannelMembersForUser(userId string, allowFromCache bool, includeDeleted bool) StoreChannel
   162  	InvalidateAllChannelMembersForUser(userId string)
   163  	IsUserInChannelUseCache(userId string, channelId string) bool
   164  	GetAllChannelMembersNotifyPropsForChannel(channelId string, allowFromCache bool) StoreChannel
   165  	InvalidateCacheForChannelMembersNotifyProps(channelId string)
   166  	GetMemberForPost(postId string, userId string) StoreChannel
   167  	InvalidateMemberCount(channelId string)
   168  	GetMemberCountFromCache(channelId string) int64
   169  	GetMemberCount(channelId string, allowFromCache bool) StoreChannel
   170  	GetPinnedPosts(channelId string) StoreChannel
   171  	RemoveMember(channelId string, userId string) StoreChannel
   172  	PermanentDeleteMembersByUser(userId string) StoreChannel
   173  	PermanentDeleteMembersByChannel(channelId string) StoreChannel
   174  	UpdateLastViewedAt(channelIds []string, userId string) StoreChannel
   175  	IncrementMentionCount(channelId string, userId string) StoreChannel
   176  	AnalyticsTypeCount(teamId string, channelType string) StoreChannel
   177  	GetMembersForUser(teamId string, userId string) StoreChannel
   178  	GetMembersForUserWithPagination(teamId, userId string, page, perPage int) StoreChannel
   179  	AutocompleteInTeam(teamId string, term string, includeDeleted bool) StoreChannel
   180  	AutocompleteInTeamForSearch(teamId string, userId string, term string, includeDeleted bool) StoreChannel
   181  	SearchAllChannels(term string, includeDeleted bool) StoreChannel
   182  	SearchInTeam(teamId string, term string, includeDeleted bool) StoreChannel
   183  	SearchMore(userId string, teamId string, term string) StoreChannel
   184  	GetMembersByIds(channelId string, userIds []string) StoreChannel
   185  	AnalyticsDeletedTypeCount(teamId string, channelType string) StoreChannel
   186  	GetChannelUnread(channelId, userId string) StoreChannel
   187  	ClearCaches()
   188  	GetChannelsByScheme(schemeId string, offset int, limit int) StoreChannel
   189  	MigrateChannelMembers(fromChannelId string, fromUserId string) StoreChannel
   190  	ResetAllChannelSchemes() StoreChannel
   191  	ClearAllCustomRoleAssignments() StoreChannel
   192  	MigratePublicChannels() error
   193  	GetAllChannelsForExportAfter(limit int, afterId string) StoreChannel
   194  	GetAllDirectChannelsForExportAfter(limit int, afterId string) StoreChannel
   195  	GetChannelMembersForExport(userId string, teamId string) StoreChannel
   196  	RemoveAllDeactivatedMembers(channelId string) StoreChannel
   197  	GetChannelsBatchForIndexing(startTime, endTime int64, limit int) StoreChannel
   198  }
   199  
   200  type ChannelMemberHistoryStore interface {
   201  	LogJoinEvent(userId string, channelId string, joinTime int64) StoreChannel
   202  	LogLeaveEvent(userId string, channelId string, leaveTime int64) StoreChannel
   203  	GetUsersInChannelDuring(startTime int64, endTime int64, channelId string) StoreChannel
   204  	PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
   205  }
   206  
   207  type PostStore interface {
   208  	Save(post *model.Post) StoreChannel
   209  	Update(newPost *model.Post, oldPost *model.Post) StoreChannel
   210  	Get(id string) StoreChannel
   211  	GetSingle(id string) StoreChannel
   212  	Delete(postId string, time int64, deleteByID string) StoreChannel
   213  	PermanentDeleteByUser(userId string) StoreChannel
   214  	PermanentDeleteByChannel(channelId string) StoreChannel
   215  	GetPosts(channelId string, offset int, limit int, allowFromCache bool) StoreChannel
   216  	GetFlaggedPosts(userId string, offset int, limit int) StoreChannel
   217  	GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) StoreChannel
   218  	GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) StoreChannel
   219  	GetPostsBefore(channelId string, postId string, numPosts int, offset int) StoreChannel
   220  	GetPostsAfter(channelId string, postId string, numPosts int, offset int) StoreChannel
   221  	GetPostsSince(channelId string, time int64, allowFromCache bool) StoreChannel
   222  	GetEtag(channelId string, allowFromCache bool) StoreChannel
   223  	Search(teamId string, userId string, params *model.SearchParams) StoreChannel
   224  	AnalyticsUserCountsWithPostsByDay(teamId string) StoreChannel
   225  	AnalyticsPostCountsByDay(teamId string) StoreChannel
   226  	AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) StoreChannel
   227  	ClearCaches()
   228  	InvalidateLastPostTimeCache(channelId string)
   229  	GetPostsCreatedAt(channelId string, time int64) StoreChannel
   230  	Overwrite(post *model.Post) StoreChannel
   231  	GetPostsByIds(postIds []string) StoreChannel
   232  	GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) StoreChannel
   233  	PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
   234  	GetOldest() StoreChannel
   235  	GetMaxPostSize() StoreChannel
   236  	GetParentsForExportAfter(limit int, afterId string) StoreChannel
   237  	GetRepliesForExport(parentId string) StoreChannel
   238  	GetDirectPostParentsForExportAfter(limit int, afterId string) StoreChannel
   239  }
   240  
   241  type UserStore interface {
   242  	Save(user *model.User) StoreChannel
   243  	Update(user *model.User, allowRoleUpdate bool) StoreChannel
   244  	UpdateLastPictureUpdate(userId string) StoreChannel
   245  	ResetLastPictureUpdate(userId string) StoreChannel
   246  	UpdateUpdateAt(userId string) StoreChannel
   247  	UpdatePassword(userId, newPassword string) StoreChannel
   248  	UpdateAuthData(userId string, service string, authData *string, email string, resetMfa bool) StoreChannel
   249  	UpdateMfaSecret(userId, secret string) StoreChannel
   250  	UpdateMfaActive(userId string, active bool) StoreChannel
   251  	Get(id string) StoreChannel
   252  	GetAll() StoreChannel
   253  	ClearCaches()
   254  	InvalidateProfilesInChannelCacheByUser(userId string)
   255  	InvalidateProfilesInChannelCache(channelId string)
   256  	GetProfilesInChannel(channelId string, offset int, limit int) StoreChannel
   257  	GetProfilesInChannelByStatus(channelId string, offset int, limit int) StoreChannel
   258  	GetAllProfilesInChannel(channelId string, allowFromCache bool) StoreChannel
   259  	GetProfilesNotInChannel(teamId string, channelId string, offset int, limit int) StoreChannel
   260  	GetProfilesWithoutTeam(offset int, limit int) StoreChannel
   261  	GetProfilesByUsernames(usernames []string, teamId string) StoreChannel
   262  	GetAllProfiles(options *model.UserGetOptions) StoreChannel
   263  	GetProfiles(options *model.UserGetOptions) StoreChannel
   264  	GetProfileByIds(userId []string, allowFromCache bool) StoreChannel
   265  	InvalidatProfileCacheForUser(userId string)
   266  	GetByEmail(email string) StoreChannel
   267  	GetByAuth(authData *string, authService string) StoreChannel
   268  	GetAllUsingAuthService(authService string) StoreChannel
   269  	GetByUsername(username string) StoreChannel
   270  	GetForLogin(loginId string, allowSignInWithUsername, allowSignInWithEmail bool) StoreChannel
   271  	VerifyEmail(userId, email string) StoreChannel
   272  	GetEtagForAllProfiles() StoreChannel
   273  	GetEtagForProfiles(teamId string) StoreChannel
   274  	UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel
   275  	GetSystemAdminProfiles() StoreChannel
   276  	PermanentDelete(userId string) StoreChannel
   277  	AnalyticsActiveCount(time int64) StoreChannel
   278  	GetUnreadCount(userId string) StoreChannel
   279  	GetUnreadCountForChannel(userId string, channelId string) StoreChannel
   280  	GetAnyUnreadPostCountForChannel(userId string, channelId string) StoreChannel
   281  	GetRecentlyActiveUsersForTeam(teamId string, offset, limit int) StoreChannel
   282  	GetNewUsersForTeam(teamId string, offset, limit int) StoreChannel
   283  	Search(teamId string, term string, options *model.UserSearchOptions) StoreChannel
   284  	SearchNotInTeam(notInTeamId string, term string, options *model.UserSearchOptions) StoreChannel
   285  	SearchInChannel(channelId string, term string, options *model.UserSearchOptions) StoreChannel
   286  	SearchNotInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) StoreChannel
   287  	SearchWithoutTeam(term string, options *model.UserSearchOptions) StoreChannel
   288  	AnalyticsGetInactiveUsersCount() StoreChannel
   289  	AnalyticsGetSystemAdminCount() StoreChannel
   290  	GetProfilesNotInTeam(teamId string, offset int, limit int) StoreChannel
   291  	GetEtagForProfilesNotInTeam(teamId string) StoreChannel
   292  	ClearAllCustomRoleAssignments() StoreChannel
   293  	InferSystemInstallDate() StoreChannel
   294  	GetAllAfter(limit int, afterId string) StoreChannel
   295  	GetUsersBatchForIndexing(startTime, endTime int64, limit int) StoreChannel
   296  	Count(options model.UserCountOptions) StoreChannel
   297  }
   298  
   299  type BotStore interface {
   300  	Get(userId string, includeDeleted bool) StoreChannel
   301  	GetAll(options *model.BotGetOptions) StoreChannel
   302  	Save(bot *model.Bot) StoreChannel
   303  	Update(bot *model.Bot) StoreChannel
   304  	PermanentDelete(userId string) StoreChannel
   305  }
   306  
   307  type SessionStore interface {
   308  	Save(session *model.Session) StoreChannel
   309  	Get(sessionIdOrToken string) StoreChannel
   310  	GetSessions(userId string) StoreChannel
   311  	GetSessionsWithActiveDeviceIds(userId string) StoreChannel
   312  	Remove(sessionIdOrToken string) StoreChannel
   313  	RemoveAllSessions() StoreChannel
   314  	PermanentDeleteSessionsByUser(teamId string) StoreChannel
   315  	UpdateLastActivityAt(sessionId string, time int64) StoreChannel
   316  	UpdateRoles(userId string, roles string) StoreChannel
   317  	UpdateDeviceId(id string, deviceId string, expiresAt int64) StoreChannel
   318  	AnalyticsSessionCount() StoreChannel
   319  	Cleanup(expiryTime int64, batchSize int64)
   320  }
   321  
   322  type AuditStore interface {
   323  	Save(audit *model.Audit) StoreChannel
   324  	Get(user_id string, offset int, limit int) StoreChannel
   325  	PermanentDeleteByUser(userId string) StoreChannel
   326  	PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
   327  }
   328  
   329  type ClusterDiscoveryStore interface {
   330  	Save(discovery *model.ClusterDiscovery) StoreChannel
   331  	Delete(discovery *model.ClusterDiscovery) StoreChannel
   332  	Exists(discovery *model.ClusterDiscovery) StoreChannel
   333  	GetAll(discoveryType, clusterName string) StoreChannel
   334  	SetLastPingAt(discovery *model.ClusterDiscovery) StoreChannel
   335  	Cleanup() StoreChannel
   336  }
   337  
   338  type ComplianceStore interface {
   339  	Save(compliance *model.Compliance) StoreChannel
   340  	Update(compliance *model.Compliance) StoreChannel
   341  	Get(id string) StoreChannel
   342  	GetAll(offset, limit int) StoreChannel
   343  	ComplianceExport(compliance *model.Compliance) StoreChannel
   344  	MessageExport(after int64, limit int) StoreChannel
   345  }
   346  
   347  type OAuthStore interface {
   348  	SaveApp(app *model.OAuthApp) StoreChannel
   349  	UpdateApp(app *model.OAuthApp) StoreChannel
   350  	GetApp(id string) StoreChannel
   351  	GetAppByUser(userId string, offset, limit int) StoreChannel
   352  	GetApps(offset, limit int) StoreChannel
   353  	GetAuthorizedApps(userId string, offset, limit int) StoreChannel
   354  	DeleteApp(id string) StoreChannel
   355  	SaveAuthData(authData *model.AuthData) StoreChannel
   356  	GetAuthData(code string) StoreChannel
   357  	RemoveAuthData(code string) StoreChannel
   358  	PermanentDeleteAuthDataByUser(userId string) StoreChannel
   359  	SaveAccessData(accessData *model.AccessData) StoreChannel
   360  	UpdateAccessData(accessData *model.AccessData) StoreChannel
   361  	GetAccessData(token string) StoreChannel
   362  	GetAccessDataByUserForApp(userId, clientId string) StoreChannel
   363  	GetAccessDataByRefreshToken(token string) StoreChannel
   364  	GetPreviousAccessData(userId, clientId string) StoreChannel
   365  	RemoveAccessData(token string) StoreChannel
   366  }
   367  
   368  type SystemStore interface {
   369  	Save(system *model.System) StoreChannel
   370  	SaveOrUpdate(system *model.System) StoreChannel
   371  	Update(system *model.System) StoreChannel
   372  	Get() StoreChannel
   373  	GetByName(name string) StoreChannel
   374  	PermanentDeleteByName(name string) StoreChannel
   375  }
   376  
   377  type WebhookStore interface {
   378  	SaveIncoming(webhook *model.IncomingWebhook) StoreChannel
   379  	GetIncoming(id string, allowFromCache bool) StoreChannel
   380  	GetIncomingList(offset, limit int) StoreChannel
   381  	GetIncomingByTeam(teamId string, offset, limit int) StoreChannel
   382  	UpdateIncoming(webhook *model.IncomingWebhook) StoreChannel
   383  	GetIncomingByChannel(channelId string) StoreChannel
   384  	DeleteIncoming(webhookId string, time int64) StoreChannel
   385  	PermanentDeleteIncomingByChannel(channelId string) StoreChannel
   386  	PermanentDeleteIncomingByUser(userId string) StoreChannel
   387  
   388  	SaveOutgoing(webhook *model.OutgoingWebhook) StoreChannel
   389  	GetOutgoing(id string) StoreChannel
   390  	GetOutgoingList(offset, limit int) StoreChannel
   391  	GetOutgoingByChannel(channelId string, offset, limit int) StoreChannel
   392  	GetOutgoingByTeam(teamId string, offset, limit int) StoreChannel
   393  	DeleteOutgoing(webhookId string, time int64) StoreChannel
   394  	PermanentDeleteOutgoingByChannel(channelId string) StoreChannel
   395  	PermanentDeleteOutgoingByUser(userId string) StoreChannel
   396  	UpdateOutgoing(hook *model.OutgoingWebhook) StoreChannel
   397  
   398  	AnalyticsIncomingCount(teamId string) StoreChannel
   399  	AnalyticsOutgoingCount(teamId string) StoreChannel
   400  	InvalidateWebhookCache(webhook string)
   401  	ClearCaches()
   402  }
   403  
   404  type CommandStore interface {
   405  	Save(webhook *model.Command) StoreChannel
   406  	Get(id string) StoreChannel
   407  	GetByTeam(teamId string) StoreChannel
   408  	GetByTrigger(teamId string, trigger string) StoreChannel
   409  	Delete(commandId string, time int64) StoreChannel
   410  	PermanentDeleteByTeam(teamId string) StoreChannel
   411  	PermanentDeleteByUser(userId string) StoreChannel
   412  	Update(hook *model.Command) StoreChannel
   413  	AnalyticsCommandCount(teamId string) StoreChannel
   414  }
   415  
   416  type CommandWebhookStore interface {
   417  	Save(webhook *model.CommandWebhook) StoreChannel
   418  	Get(id string) StoreChannel
   419  	TryUse(id string, limit int) StoreChannel
   420  	Cleanup()
   421  }
   422  
   423  type PreferenceStore interface {
   424  	Save(preferences *model.Preferences) StoreChannel
   425  	Get(userId string, category string, name string) StoreChannel
   426  	GetCategory(userId string, category string) StoreChannel
   427  	GetAll(userId string) StoreChannel
   428  	Delete(userId, category, name string) StoreChannel
   429  	DeleteCategory(userId string, category string) StoreChannel
   430  	DeleteCategoryAndName(category string, name string) StoreChannel
   431  	PermanentDeleteByUser(userId string) StoreChannel
   432  	IsFeatureEnabled(feature, userId string) StoreChannel
   433  	CleanupFlagsBatch(limit int64) StoreChannel
   434  }
   435  
   436  type LicenseStore interface {
   437  	Save(license *model.LicenseRecord) StoreChannel
   438  	Get(id string) StoreChannel
   439  }
   440  
   441  type TokenStore interface {
   442  	Save(recovery *model.Token) StoreChannel
   443  	Delete(token string) StoreChannel
   444  	GetByToken(token string) StoreChannel
   445  	Cleanup()
   446  	RemoveAllTokensByType(tokenType string) StoreChannel
   447  }
   448  
   449  type EmojiStore interface {
   450  	Save(emoji *model.Emoji) StoreChannel
   451  	Get(id string, allowFromCache bool) StoreChannel
   452  	GetByName(name string) StoreChannel
   453  	GetMultipleByName(names []string) StoreChannel
   454  	GetList(offset, limit int, sort string) StoreChannel
   455  	Delete(id string, time int64) StoreChannel
   456  	Search(name string, prefixOnly bool, limit int) StoreChannel
   457  }
   458  
   459  type StatusStore interface {
   460  	SaveOrUpdate(status *model.Status) StoreChannel
   461  	Get(userId string) StoreChannel
   462  	GetByIds(userIds []string) StoreChannel
   463  	GetOnlineAway() StoreChannel
   464  	GetOnline() StoreChannel
   465  	GetAllFromTeam(teamId string) StoreChannel
   466  	ResetAll() StoreChannel
   467  	GetTotalActiveUsersCount() StoreChannel
   468  	UpdateLastActivityAt(userId string, lastActivityAt int64) StoreChannel
   469  }
   470  
   471  type FileInfoStore interface {
   472  	Save(info *model.FileInfo) StoreChannel
   473  	Get(id string) StoreChannel
   474  	GetByPath(path string) StoreChannel
   475  	GetForPost(postId string, readFromMaster bool, allowFromCache bool) StoreChannel
   476  	GetForUser(userId string) StoreChannel
   477  	InvalidateFileInfosForPostCache(postId string)
   478  	AttachToPost(fileId string, postId string, creatorId string) StoreChannel
   479  	DeleteForPost(postId string) StoreChannel
   480  	PermanentDelete(fileId string) StoreChannel
   481  	PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
   482  	PermanentDeleteByUser(userId string) StoreChannel
   483  	ClearCaches()
   484  }
   485  
   486  type ReactionStore interface {
   487  	Save(reaction *model.Reaction) StoreChannel
   488  	Delete(reaction *model.Reaction) StoreChannel
   489  	GetForPost(postId string, allowFromCache bool) StoreChannel
   490  	DeleteAllWithEmojiName(emojiName string) StoreChannel
   491  	PermanentDeleteBatch(endTime int64, limit int64) StoreChannel
   492  	BulkGetForPosts(postIds []string) StoreChannel
   493  }
   494  
   495  type JobStore interface {
   496  	Save(job *model.Job) StoreChannel
   497  	UpdateOptimistically(job *model.Job, currentStatus string) StoreChannel
   498  	UpdateStatus(id string, status string) StoreChannel
   499  	UpdateStatusOptimistically(id string, currentStatus string, newStatus string) StoreChannel
   500  	Get(id string) StoreChannel
   501  	GetAllPage(offset int, limit int) StoreChannel
   502  	GetAllByType(jobType string) StoreChannel
   503  	GetAllByTypePage(jobType string, offset int, limit int) StoreChannel
   504  	GetAllByStatus(status string) StoreChannel
   505  	GetNewestJobByStatusAndType(status string, jobType string) StoreChannel
   506  	GetCountByStatusAndType(status string, jobType string) StoreChannel
   507  	Delete(id string) StoreChannel
   508  }
   509  
   510  type UserAccessTokenStore interface {
   511  	Save(token *model.UserAccessToken) StoreChannel
   512  	Delete(tokenId string) StoreChannel
   513  	DeleteAllForUser(userId string) StoreChannel
   514  	Get(tokenId string) StoreChannel
   515  	GetAll(offset int, limit int) StoreChannel
   516  	GetByToken(tokenString string) StoreChannel
   517  	GetByUser(userId string, page, perPage int) StoreChannel
   518  	Search(term string) StoreChannel
   519  	UpdateTokenEnable(tokenId string) StoreChannel
   520  	UpdateTokenDisable(tokenId string) StoreChannel
   521  }
   522  
   523  type PluginStore interface {
   524  	SaveOrUpdate(keyVal *model.PluginKeyValue) StoreChannel
   525  	Get(pluginId, key string) StoreChannel
   526  	Delete(pluginId, key string) StoreChannel
   527  	DeleteAllForPlugin(PluginId string) StoreChannel
   528  	DeleteAllExpired() StoreChannel
   529  	List(pluginId string, page, perPage int) StoreChannel
   530  }
   531  
   532  type RoleStore interface {
   533  	Save(role *model.Role) StoreChannel
   534  	Get(roleId string) StoreChannel
   535  	GetAll() StoreChannel
   536  	GetByName(name string) StoreChannel
   537  	GetByNames(names []string) StoreChannel
   538  	Delete(roldId string) StoreChannel
   539  	PermanentDeleteAll() StoreChannel
   540  }
   541  
   542  type SchemeStore interface {
   543  	Save(scheme *model.Scheme) StoreChannel
   544  	Get(schemeId string) StoreChannel
   545  	GetByName(schemeName string) StoreChannel
   546  	GetAllPage(scope string, offset int, limit int) StoreChannel
   547  	Delete(schemeId string) StoreChannel
   548  	PermanentDeleteAll() StoreChannel
   549  }
   550  
   551  type TermsOfServiceStore interface {
   552  	Save(termsOfService *model.TermsOfService) StoreChannel
   553  	GetLatest(allowFromCache bool) StoreChannel
   554  	Get(id string, allowFromCache bool) StoreChannel
   555  }
   556  
   557  type UserTermsOfServiceStore interface {
   558  	GetByUser(userId string) StoreChannel
   559  	Save(userTermsOfService *model.UserTermsOfService) StoreChannel
   560  	Delete(userId, termsOfServiceId string) StoreChannel
   561  }
   562  
   563  type GroupStore interface {
   564  	Create(group *model.Group) StoreChannel
   565  	Get(groupID string) StoreChannel
   566  	GetByRemoteID(remoteID string, groupSource model.GroupSource) StoreChannel
   567  	GetAllBySource(groupSource model.GroupSource) StoreChannel
   568  	Update(group *model.Group) StoreChannel
   569  	Delete(groupID string) StoreChannel
   570  
   571  	GetMemberUsers(groupID string) StoreChannel
   572  	GetMemberUsersPage(groupID string, offset int, limit int) StoreChannel
   573  	GetMemberCount(groupID string) StoreChannel
   574  	CreateOrRestoreMember(groupID string, userID string) StoreChannel
   575  	DeleteMember(groupID string, userID string) StoreChannel
   576  
   577  	CreateGroupSyncable(groupSyncable *model.GroupSyncable) StoreChannel
   578  	GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) StoreChannel
   579  	GetAllGroupSyncablesByGroupId(groupID string, syncableType model.GroupSyncableType) StoreChannel
   580  	UpdateGroupSyncable(groupSyncable *model.GroupSyncable) StoreChannel
   581  	DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) StoreChannel
   582  
   583  	PendingAutoAddTeamMembers(minGroupMembersCreateAt int64) StoreChannel
   584  	PendingAutoAddChannelMembers(minGroupMembersCreateAt int64) StoreChannel
   585  }
   586  
   587  type LinkMetadataStore interface {
   588  	Save(linkMetadata *model.LinkMetadata) StoreChannel
   589  	Get(url string, timestamp int64) StoreChannel
   590  }