MM-11863 Add KVList method (#9467)
* Add KVList method * Add KVList method Add KVList method * Add pagination support * Change offset, limit to page, perPage * Rename constant
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
7468f35cb0
Коммит
8c03e584c1
@@ -12,6 +12,10 @@ import (
|
||||
"github.com/mattermost/mattermost-server/store"
|
||||
)
|
||||
|
||||
const (
|
||||
DEFAULT_PLUGIN_KEY_FETCH_LIMIT = 10
|
||||
)
|
||||
|
||||
type SqlPluginStore struct {
|
||||
SqlStore
|
||||
}
|
||||
@@ -92,3 +96,23 @@ func (ps SqlPluginStore) Delete(pluginId, key string) store.StoreChannel {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func (ps SqlPluginStore) List(pluginId string, offset int, limit int) store.StoreChannel {
|
||||
if limit <= 0 {
|
||||
limit = DEFAULT_PLUGIN_KEY_FETCH_LIMIT
|
||||
}
|
||||
|
||||
if offset <= 0 {
|
||||
offset = 0
|
||||
}
|
||||
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
var keys []string
|
||||
_, err := ps.GetReplica().Select(&keys, "SELECT PKey FROM PluginKeyValueStore WHERE PluginId = :PluginId order by PKey limit :Limit offset :Offset", map[string]interface{}{"PluginId": pluginId, "Limit": limit, "Offset": offset})
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlPluginStore.List", "store.sql_plugin_store.list.app_error", nil, fmt.Sprintf("plugin_id=%v, err=%v", pluginId, err.Error()), http.StatusInternalServerError)
|
||||
} else {
|
||||
result.Data = keys
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -501,6 +501,7 @@ type PluginStore interface {
|
||||
SaveOrUpdate(keyVal *model.PluginKeyValue) StoreChannel
|
||||
Get(pluginId, key string) StoreChannel
|
||||
Delete(pluginId, key string) StoreChannel
|
||||
List(pluginId string, page, perPage int) StoreChannel
|
||||
}
|
||||
|
||||
type RoleStore interface {
|
||||
|
||||
@@ -45,6 +45,22 @@ func (_m *PluginStore) Get(pluginId string, key string) store.StoreChannel {
|
||||
return r0
|
||||
}
|
||||
|
||||
// List provides a mock function with given fields: pluginId, page, perPage
|
||||
func (_m *PluginStore) List(pluginId string, page int, perPage int) store.StoreChannel {
|
||||
ret := _m.Called(pluginId, page, perPage)
|
||||
|
||||
var r0 store.StoreChannel
|
||||
if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok {
|
||||
r0 = rf(pluginId, page, perPage)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StoreChannel)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// SaveOrUpdate provides a mock function with given fields: keyVal
|
||||
func (_m *PluginStore) SaveOrUpdate(keyVal *model.PluginKeyValue) store.StoreChannel {
|
||||
ret := _m.Called(keyVal)
|
||||
|
||||
Ссылка в новой задаче
Block a user