switch list flag to struct param
This commit is contained in:
@@ -322,14 +322,14 @@ func (b *BoltDB) Info(req InfoRequest) ([]store.PostInfo, error) {
|
||||
|
||||
// ListFlags get list of flagged keys, like blocked & verified user
|
||||
// works for full locator (post flags) or with userID
|
||||
func (b *BoltDB) ListFlags(siteID string, flag Flag) (res []interface{}, err error) {
|
||||
func (b *BoltDB) ListFlags(req FlagRequest) (res []interface{}, err error) {
|
||||
|
||||
bdb, e := b.db(siteID)
|
||||
bdb, e := b.db(req.Locator.SiteID)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
|
||||
switch flag {
|
||||
switch req.Flag {
|
||||
case Verified:
|
||||
err = bdb.View(func(tx *bolt.Tx) error {
|
||||
usersBkt := tx.Bucket([]byte(verifiedBucketName))
|
||||
@@ -351,7 +351,7 @@ func (b *BoltDB) ListFlags(siteID string, flag Flag) (res []interface{}, err err
|
||||
if time.Now().Before(ts) {
|
||||
// get user name from comment user section
|
||||
userName := ""
|
||||
req := FindRequest{Locator: store.Locator{SiteID: siteID}, UserID: string(k), Limit: 1}
|
||||
req := FindRequest{Locator: store.Locator{SiteID: req.Locator.SiteID}, UserID: string(k), Limit: 1}
|
||||
userComments, errUser := b.Find(req)
|
||||
if errUser == nil && len(userComments) > 0 {
|
||||
userName = userComments[0].User.Name
|
||||
@@ -363,7 +363,7 @@ func (b *BoltDB) ListFlags(siteID string, flag Flag) (res []interface{}, err err
|
||||
})
|
||||
return res, err
|
||||
}
|
||||
return nil, errors.Errorf("flag %s not listable", flag)
|
||||
return nil, errors.Errorf("flag %s not listable", req.Flag)
|
||||
}
|
||||
|
||||
// Delete post(s) by id or by userID
|
||||
|
||||
@@ -530,17 +530,17 @@ func TestBolt_FlagListVerified(t *testing.T) {
|
||||
return err
|
||||
}
|
||||
|
||||
ids, err := b.ListFlags("radio-t", Verified)
|
||||
ids, err := b.ListFlags(FlagRequest{Flag: Verified, Locator: store.Locator{SiteID: "radio-t"}})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []string{}, toIDs(ids), "verified list empty")
|
||||
|
||||
assert.NoError(t, setVerified("radio-t", "u1", FlagTrue))
|
||||
assert.NoError(t, setVerified("radio-t", "u2", FlagTrue))
|
||||
ids, err = b.ListFlags("radio-t", Verified)
|
||||
ids, err = b.ListFlags(FlagRequest{Flag: Verified, Locator: store.Locator{SiteID: "radio-t"}})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []string{"u1", "u2"}, toIDs(ids), "verified 2 ids")
|
||||
|
||||
_, err = b.ListFlags("radio-t-bad", Verified)
|
||||
_, err = b.ListFlags(FlagRequest{Flag: Verified, Locator: store.Locator{SiteID: "radio-t-bad"}})
|
||||
assert.Error(t, err, "site \"radio-t-bad\" not found", "fail on wrong site")
|
||||
}
|
||||
|
||||
@@ -568,7 +568,7 @@ func TestBolt_FlagListBlocked(t *testing.T) {
|
||||
assert.NoError(t, setBlocked("radio-t", "user2", FlagTrue, 50*time.Millisecond))
|
||||
assert.NoError(t, setBlocked("radio-t", "user3", FlagFalse, 0))
|
||||
|
||||
vv, err := b.ListFlags("radio-t", Blocked)
|
||||
vv, err := b.ListFlags(FlagRequest{Flag: Blocked, Locator: store.Locator{SiteID: "radio-t"}})
|
||||
assert.NoError(t, err)
|
||||
|
||||
blockedList := toBlocked(vv)
|
||||
@@ -579,13 +579,13 @@ func TestBolt_FlagListBlocked(t *testing.T) {
|
||||
|
||||
// check block expiration
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
vv, err = b.ListFlags("radio-t", Blocked)
|
||||
vv, err = b.ListFlags(FlagRequest{Flag: Blocked, Locator: store.Locator{SiteID: "radio-t"}})
|
||||
assert.NoError(t, err)
|
||||
blockedList = toBlocked(vv)
|
||||
assert.Equal(t, 1, len(blockedList))
|
||||
assert.Equal(t, "user1", blockedList[0].ID)
|
||||
|
||||
_, err = b.ListFlags("bad", Blocked)
|
||||
_, err = b.ListFlags(FlagRequest{Flag: Blocked, Locator: store.Locator{SiteID: "bad"}})
|
||||
assert.EqualError(t, err, `site "bad" not found`)
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ type Interface interface {
|
||||
Count(req FindRequest) (int, error) // get count for post or user
|
||||
Delete(req DeleteRequest) error // delete post(s) by id or by userID
|
||||
Flag(req FlagRequest) (bool, error) // set and get flags
|
||||
ListFlags(siteID string, flag Flag) ([]interface{}, error) // get list of flagged keys, like blocked & verified user
|
||||
ListFlags(req FlagRequest) ([]interface{}, error) // get list of flagged keys, like blocked & verified user
|
||||
Close() error // close storage engine
|
||||
}
|
||||
|
||||
|
||||
@@ -167,13 +167,13 @@ func (_m *MockInterface) Info(req InfoRequest) ([]store.PostInfo, error) {
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// ListFlags provides a mock function with given fields: siteID, flag
|
||||
func (_m *MockInterface) ListFlags(siteID string, flag Flag) ([]interface{}, error) {
|
||||
ret := _m.Called(siteID, flag)
|
||||
// ListFlags provides a mock function with given fields: req
|
||||
func (_m *MockInterface) ListFlags(req FlagRequest) ([]interface{}, error) {
|
||||
ret := _m.Called(req)
|
||||
|
||||
var r0 []interface{}
|
||||
if rf, ok := ret.Get(0).(func(string, Flag) []interface{}); ok {
|
||||
r0 = rf(siteID, flag)
|
||||
if rf, ok := ret.Get(0).(func(FlagRequest) []interface{}); ok {
|
||||
r0 = rf(req)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).([]interface{})
|
||||
@@ -181,8 +181,8 @@ func (_m *MockInterface) ListFlags(siteID string, flag Flag) ([]interface{}, err
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string, Flag) error); ok {
|
||||
r1 = rf(siteID, flag)
|
||||
if rf, ok := ret.Get(1).(func(FlagRequest) error); ok {
|
||||
r1 = rf(req)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
@@ -72,8 +72,8 @@ func (r *Remote) Flag(req FlagRequest) (status bool, err error) {
|
||||
}
|
||||
|
||||
// ListFlags get list of flagged keys, like blocked & verified user
|
||||
func (r *Remote) ListFlags(siteID string, flag Flag) (list []interface{}, err error) {
|
||||
resp, err := r.Call("list_flags", siteID, flag)
|
||||
func (r *Remote) ListFlags(req FlagRequest) (list []interface{}, err error) {
|
||||
resp, err := r.Call("list_flags", req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -125,11 +125,11 @@ func TestClient_Flag(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestClient_ListFlag(t *testing.T) {
|
||||
ts := testServer(t, `{"method":"list_flags","params":["site_id","blocked"],"id":1}`,
|
||||
ts := testServer(t, `{"method":"list_flags","params":{"flag":"blocked","locator":{"site":"site_id","url":""}},"id":1}`,
|
||||
`{"result":[{"ID":"id1"},{"ID":"id2"}]}`)
|
||||
defer ts.Close()
|
||||
c := Remote{Client: remote.Client{API: ts.URL, Client: http.Client{}}}
|
||||
res, err := c.ListFlags("site_id", Blocked)
|
||||
res, err := c.ListFlags(FlagRequest{Locator: store.Locator{SiteID: "site_id"}, Flag: Blocked})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []interface{}{map[string]interface{}{"ID": "id1"}, map[string]interface{}{"ID": "id2"}}, res)
|
||||
}
|
||||
|
||||
@@ -523,7 +523,7 @@ func (s *DataStore) SetBlock(siteID string, userID string, status bool, ttl time
|
||||
|
||||
// Blocked returns list with all blocked users
|
||||
func (s *DataStore) Blocked(siteID string) (res []store.BlockedUser, err error) {
|
||||
blocked, e := s.Engine.ListFlags(siteID, engine.Blocked)
|
||||
blocked, e := s.Engine.ListFlags(engine.FlagRequest{Locator: store.Locator{SiteID: siteID}, Flag: engine.Blocked})
|
||||
if e != nil {
|
||||
return nil, errors.Wrapf(err, "can't get list of blocked users for %s", siteID)
|
||||
}
|
||||
@@ -606,7 +606,7 @@ func (s *DataStore) Metas(siteID string) (umetas []UserMetaData, pmetas []PostMe
|
||||
}
|
||||
|
||||
// process verified users
|
||||
verified, err := s.Engine.ListFlags(siteID, engine.Verified)
|
||||
verified, err := s.Engine.ListFlags(engine.FlagRequest{Locator: store.Locator{SiteID: siteID}, Flag: engine.Verified})
|
||||
if err != nil {
|
||||
return nil, nil, errors.Wrapf(err, "can't get list of verified users for %s", siteID)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user