diff options
author | Chris <ccbrown112@gmail.com> | 2017-09-25 09:11:25 -0500 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-09-25 10:11:25 -0400 |
commit | 49fe5fbf3db56fc466b8997b182ee135d7a4365d (patch) | |
tree | 1252fea09aa3ce899e2e8edb1fb7b42900f50bca /store/sql_emoji_store.go | |
parent | b2c5b97601b61f5748b46e4e386134203111ebb0 (diff) | |
download | chat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.tar.gz chat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.tar.bz2 chat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.zip |
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
Diffstat (limited to 'store/sql_emoji_store.go')
-rw-r--r-- | store/sql_emoji_store.go | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/store/sql_emoji_store.go b/store/sql_emoji_store.go deleted file mode 100644 index dc67be795..000000000 --- a/store/sql_emoji_store.go +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package store - -import ( - "net/http" - - "github.com/mattermost/mattermost-server/einterfaces" - "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/utils" -) - -const ( - EMOJI_CACHE_SIZE = 5000 - EMOJI_CACHE_SEC = 1800 // 30 mins -) - -var emojiCache *utils.Cache = utils.NewLru(EMOJI_CACHE_SIZE) - -type SqlEmojiStore struct { - SqlStore - metrics einterfaces.MetricsInterface -} - -func NewSqlEmojiStore(sqlStore SqlStore, metrics einterfaces.MetricsInterface) EmojiStore { - s := &SqlEmojiStore{ - SqlStore: sqlStore, - metrics: metrics, - } - - for _, db := range sqlStore.GetAllConns() { - table := db.AddTableWithName(model.Emoji{}, "Emoji").SetKeys(false, "Id") - table.ColMap("Id").SetMaxSize(26) - table.ColMap("CreatorId").SetMaxSize(26) - table.ColMap("Name").SetMaxSize(64) - - table.SetUniqueTogether("Name", "DeleteAt") - } - - return s -} - -func (es SqlEmojiStore) CreateIndexesIfNotExists() { - es.CreateIndexIfNotExists("idx_emoji_update_at", "Emoji", "UpdateAt") - es.CreateIndexIfNotExists("idx_emoji_create_at", "Emoji", "CreateAt") - es.CreateIndexIfNotExists("idx_emoji_delete_at", "Emoji", "DeleteAt") -} - -func (es SqlEmojiStore) Save(emoji *model.Emoji) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - emoji.PreSave() - if result.Err = emoji.IsValid(); result.Err != nil { - storeChannel <- result - close(storeChannel) - return - } - - if err := es.GetMaster().Insert(emoji); err != nil { - result.Err = model.NewAppError("SqlEmojiStore.Save", "store.sql_emoji.save.app_error", nil, "id="+emoji.Id+", "+err.Error(), http.StatusInternalServerError) - } else { - result.Data = emoji - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (es SqlEmojiStore) Get(id string, allowFromCache bool) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - if allowFromCache { - if cacheItem, ok := emojiCache.Get(id); ok { - if es.metrics != nil { - es.metrics.IncrementMemCacheHitCounter("Emoji") - } - result.Data = cacheItem.(*model.Emoji) - storeChannel <- result - close(storeChannel) - return - } else { - if es.metrics != nil { - es.metrics.IncrementMemCacheMissCounter("Emoji") - } - } - } else { - if es.metrics != nil { - es.metrics.IncrementMemCacheMissCounter("Emoji") - } - } - - var emoji *model.Emoji - - if err := es.GetReplica().SelectOne(&emoji, - `SELECT - * - FROM - Emoji - WHERE - Id = :Id - AND DeleteAt = 0`, map[string]interface{}{"Id": id}); err != nil { - result.Err = model.NewAppError("SqlEmojiStore.Get", "store.sql_emoji.get.app_error", nil, "id="+id+", "+err.Error(), http.StatusNotFound) - } else { - result.Data = emoji - - if allowFromCache { - emojiCache.AddWithExpiresInSecs(id, emoji, EMOJI_CACHE_SEC) - } - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (es SqlEmojiStore) GetByName(name string) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - var emoji *model.Emoji - - if err := es.GetReplica().SelectOne(&emoji, - `SELECT - * - FROM - Emoji - WHERE - Name = :Name - AND DeleteAt = 0`, map[string]interface{}{"Name": name}); err != nil { - result.Err = model.NewAppError("SqlEmojiStore.GetByName", "store.sql_emoji.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError) - } else { - result.Data = emoji - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (es SqlEmojiStore) GetList(offset, limit int) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - var emoji []*model.Emoji - - if _, err := es.GetReplica().Select(&emoji, - `SELECT - * - FROM - Emoji - WHERE - DeleteAt = 0 - LIMIT :Limit OFFSET :Offset`, map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil { - result.Err = model.NewAppError("SqlEmojiStore.GetList", "store.sql_emoji.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) - } else { - result.Data = emoji - } - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} - -func (es SqlEmojiStore) Delete(id string, time int64) StoreChannel { - storeChannel := make(StoreChannel, 1) - - go func() { - result := StoreResult{} - - if sqlResult, err := es.GetMaster().Exec( - `Update - Emoji - SET - DeleteAt = :DeleteAt, - UpdateAt = :UpdateAt - WHERE - Id = :Id - AND DeleteAt = 0`, map[string]interface{}{"DeleteAt": time, "UpdateAt": time, "Id": id}); err != nil { - result.Err = model.NewAppError("SqlEmojiStore.Delete", "store.sql_emoji.delete.app_error", nil, "id="+id+", err="+err.Error(), http.StatusInternalServerError) - } else if rows, _ := sqlResult.RowsAffected(); rows == 0 { - result.Err = model.NewAppError("SqlEmojiStore.Delete", "store.sql_emoji.delete.no_results", nil, "id="+id+", err="+err.Error(), http.StatusBadRequest) - } - - emojiCache.Remove(id) - - storeChannel <- result - close(storeChannel) - }() - - return storeChannel -} |