From 49fe5fbf3db56fc466b8997b182ee135d7a4365d Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 25 Sep 2017 09:11:25 -0500 Subject: Move sql store code into store/sqlstore package (#7502) * move sql store code into store/sqlstore package * move non-sql constants back up to store * fix api test * derp --- store/sql_compliance_store.go | 266 ------------------------------------------ 1 file changed, 266 deletions(-) delete mode 100644 store/sql_compliance_store.go (limited to 'store/sql_compliance_store.go') diff --git a/store/sql_compliance_store.go b/store/sql_compliance_store.go deleted file mode 100644 index 73015d47f..000000000 --- a/store/sql_compliance_store.go +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package store - -import ( - "net/http" - "strconv" - "strings" - - "github.com/mattermost/mattermost-server/model" -) - -type SqlComplianceStore struct { - SqlStore -} - -func NewSqlComplianceStore(sqlStore SqlStore) ComplianceStore { - s := &SqlComplianceStore{sqlStore} - - for _, db := range sqlStore.GetAllConns() { - table := db.AddTableWithName(model.Compliance{}, "Compliances").SetKeys(false, "Id") - table.ColMap("Id").SetMaxSize(26) - table.ColMap("UserId").SetMaxSize(26) - table.ColMap("Status").SetMaxSize(64) - table.ColMap("Desc").SetMaxSize(512) - table.ColMap("Type").SetMaxSize(64) - table.ColMap("Keywords").SetMaxSize(512) - table.ColMap("Emails").SetMaxSize(1024) - } - - return s -} - -func (s SqlComplianceStore) CreateIndexesIfNotExists() { -} - -func (s SqlComplianceStore) Save(compliance *model.Compliance) StoreChannel { - - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - compliance.PreSave() - if result.Err = compliance.IsValid(); result.Err != nil { - storeChannel <- result - close(storeChannel) - return - } - - if err := s.GetMaster().Insert(compliance); err != nil { - result.Err = model.NewAppError("SqlComplianceStore.Save", "store.sql_compliance.save.saving.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - result.Data = compliance - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (us SqlComplianceStore) Update(compliance *model.Compliance) StoreChannel { - - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - if result.Err = compliance.IsValid(); result.Err != nil { - storeChannel <- result - close(storeChannel) - return - } - - if _, err := us.GetMaster().Update(compliance); err != nil { - result.Err = model.NewAppError("SqlComplianceStore.Update", "store.sql_compliance.save.saving.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - result.Data = compliance - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (s SqlComplianceStore) GetAll(offset, limit int) StoreChannel { - - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - query := "SELECT * FROM Compliances ORDER BY CreateAt DESC LIMIT :Limit OFFSET :Offset" - - var compliances model.Compliances - if _, err := s.GetReplica().Select(&compliances, query, map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil { - result.Err = model.NewAppError("SqlComplianceStore.Get", "store.sql_compliance.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - result.Data = compliances - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (us SqlComplianceStore) Get(id string) StoreChannel { - - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - if obj, err := us.GetReplica().Get(model.Compliance{}, id); err != nil { - result.Err = model.NewAppError("SqlComplianceStore.Get", "store.sql_compliance.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) - } else if obj == nil { - result.Err = model.NewAppError("SqlComplianceStore.Get", "store.sql_compliance.get.finding.app_error", nil, err.Error(), http.StatusNotFound) - } else { - result.Data = obj.(*model.Compliance) - } - - storeChannel <- result - close(storeChannel) - - }() - - return storeChannel -} - -func (s SqlComplianceStore) ComplianceExport(job *model.Compliance) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - props := map[string]interface{}{"StartTime": job.StartAt, "EndTime": job.EndAt} - - keywordQuery := "" - keywords := strings.Fields(strings.TrimSpace(strings.ToLower(strings.Replace(job.Keywords, ",", " ", -1)))) - if len(keywords) > 0 { - - keywordQuery = "AND (" - - for index, keyword := range keywords { - if index >= 1 { - keywordQuery += " OR LOWER(Posts.Message) LIKE :Keyword" + strconv.Itoa(index) - } else { - keywordQuery += "LOWER(Posts.Message) LIKE :Keyword" + strconv.Itoa(index) - } - - props["Keyword"+strconv.Itoa(index)] = "%" + keyword + "%" - } - - keywordQuery += ")" - } - - emailQuery := "" - emails := strings.Fields(strings.TrimSpace(strings.ToLower(strings.Replace(job.Emails, ",", " ", -1)))) - if len(emails) > 0 { - - emailQuery = "AND (" - - for index, email := range emails { - if index >= 1 { - emailQuery += " OR Users.Email = :Email" + strconv.Itoa(index) - } else { - emailQuery += "Users.Email = :Email" + strconv.Itoa(index) - } - - props["Email"+strconv.Itoa(index)] = email - } - - emailQuery += ")" - } - - 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.FileIds AS PostFileIds - 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 - ` + emailQuery + ` - ` + keywordQuery + `) - UNION ALL - (SELECT - 'direct-messages' AS TeamName, - 'Direct Messages' 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.FileIds AS PostFileIds - FROM - Channels, - Users, - Posts - WHERE - Channels.TeamId = '' - AND Posts.ChannelId = Channels.Id - AND Posts.UserId = Users.Id - AND Posts.CreateAt > :StartTime - AND Posts.CreateAt <= :EndTime - ` + emailQuery + ` - ` + keywordQuery + `) - ORDER BY PostCreateAt - LIMIT 30000` - - var cposts []*model.CompliancePost - - if _, err := s.GetReplica().Select(&cposts, query, props); err != nil { - result.Err = model.NewAppError("SqlPostStore.ComplianceExport", "store.sql_post.compliance_export.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - result.Data = cposts - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} -- cgit v1.2.3-1-g7c22