summaryrefslogtreecommitdiffstats
path: root/store/sqlstore/emoji_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'store/sqlstore/emoji_store.go')
-rw-r--r--store/sqlstore/emoji_store.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/store/sqlstore/emoji_store.go b/store/sqlstore/emoji_store.go
index 734190dbb..afd87b83d 100644
--- a/store/sqlstore/emoji_store.go
+++ b/store/sqlstore/emoji_store.go
@@ -46,6 +46,7 @@ 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")
+ es.CreateIndexIfNotExists("idx_emoji_name", "Emoji", "Name")
}
func (es SqlEmojiStore) Save(emoji *model.Emoji) store.StoreChannel {
@@ -162,3 +163,31 @@ func (es SqlEmojiStore) Delete(id string, time int64) store.StoreChannel {
emojiCache.Remove(id)
})
}
+
+func (es SqlEmojiStore) Search(name string, prefixOnly bool, limit int) store.StoreChannel {
+ return store.Do(func(result *store.StoreResult) {
+ var emojis []*model.Emoji
+
+ term := ""
+ if !prefixOnly {
+ term = "%"
+ }
+
+ term += name + "%"
+
+ if _, err := es.GetReplica().Select(&emojis,
+ `SELECT
+ *
+ FROM
+ Emoji
+ WHERE
+ Name LIKE :Name
+ AND DeleteAt = 0
+ ORDER BY Name
+ LIMIT :Limit`, map[string]interface{}{"Name": term, "Limit": limit}); err != nil {
+ result.Err = model.NewAppError("SqlEmojiStore.Search", "store.sql_emoji.get_by_name.app_error", nil, "name="+name+", "+err.Error(), http.StatusInternalServerError)
+ } else {
+ result.Data = emojis
+ }
+ })
+}