summaryrefslogtreecommitdiffstats
path: root/store/sql_post_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'store/sql_post_store.go')
-rw-r--r--store/sql_post_store.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/store/sql_post_store.go b/store/sql_post_store.go
index 3346534ab..198347ff2 100644
--- a/store/sql_post_store.go
+++ b/store/sql_post_store.go
@@ -979,3 +979,59 @@ func (s SqlPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustH
return storeChannel
}
+
+func (s SqlPostStore) ComplianceExport(startTime int64, endTime int64) StoreChannel {
+ storeChannel := make(StoreChannel)
+
+ go func() {
+ result := StoreResult{}
+
+ query :=
+ `SELECT
+ Teams.Name AS TeamName,
+ Teams.DisplayName AS TeamDisplayName,
+ Channels.Name AS ChannelName,
+ Channels.DisplayName AS ChannelDisplayName,
+ Users.Username AS UserUsername,
+ Users.Email AS UserEmail,
+ Users.Nickname AS UserNickname,
+ Posts.Id AS PostId,
+ Posts.CreateAt AS PostCreateAt,
+ Posts.UpdateAt AS PostUpdateAt,
+ Posts.DeleteAt AS PostDeleteAt,
+ Posts.RootId AS PostRootId,
+ Posts.ParentId AS PostParentId,
+ Posts.OriginalId AS PostOriginalId,
+ Posts.Message AS PostMessage,
+ Posts.Type AS PostType,
+ Posts.Props AS PostProps,
+ Posts.Hashtags AS PostHashtags,
+ Posts.Filenames AS PostFilenames
+ FROM
+ Teams,
+ Channels,
+ Users,
+ Posts
+ WHERE
+ Teams.Id = Channels.TeamId
+ AND Posts.ChannelId = Channels.Id
+ AND Posts.UserId = Users.Id
+ AND Posts.CreateAt > :StartTime
+ AND Posts.CreateAt <= :EndTime
+ ORDER BY Posts.CreateAt
+ LIMIT 30000`
+
+ var cposts []*model.CompliancePost
+
+ if _, err := s.GetReplica().Select(&cposts, query, map[string]interface{}{"StartTime": startTime, "EndTime": endTime}); err != nil {
+ result.Err = model.NewLocAppError("SqlPostStore.ComplianceExport", "store.sql_post.compliance_export.app_error", nil, err.Error())
+ } else {
+ result.Data = cposts
+ }
+
+ storeChannel <- result
+ close(storeChannel)
+ }()
+
+ return storeChannel
+}