Skip to content

Commit f8a53b0

Browse files
zepatrikory-bot
authored andcommitted
feat: list clients by ID
GitOrigin-RevId: 7fbfc60678beca387f854a96b55e908632508388
1 parent fbc982a commit f8a53b0

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

client/manager.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ type Filter struct {
1515
PageOpts []keysetpagination.Option
1616
Name string
1717
Owner string
18+
IDs []string
1819
}
1920

2021
type Manager interface {

client/manager_test_helpers.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,31 @@ func TestHelperCreateGetUpdateDeleteClient(t1, t2 Storage) func(t *testing.T) {
313313
assert.True(t, nextPage.IsLast())
314314
})
315315

316+
t.Run("list by ids", func(t *testing.T) {
317+
cs, nextPage, err := t1.GetClients(ctx, Filter{IDs: []string{t1c1.ID, c2Template.ID}})
318+
require.NoError(t, err)
319+
require.Len(t, cs, 2)
320+
assert.ElementsMatch(t, []string{t1c1.ID, c2Template.ID}, []string{cs[0].GetID(), cs[1].GetID()})
321+
assert.True(t, nextPage.IsLast())
322+
323+
cs, nextPage, err = t1.GetClients(ctx, Filter{IDs: []string{t1c1.ID}})
324+
require.NoError(t, err)
325+
require.Len(t, cs, 1)
326+
assert.Equal(t, t1c1.ID, cs[0].GetID())
327+
assert.True(t, nextPage.IsLast())
328+
329+
cs, nextPage, err = t1.GetClients(ctx, Filter{IDs: []string{c2Template.ID}})
330+
require.NoError(t, err)
331+
require.Len(t, cs, 1)
332+
assert.Equal(t, c2Template.ID, cs[0].GetID())
333+
assert.True(t, nextPage.IsLast())
334+
335+
cs, nextPage, err = t1.GetClients(ctx, Filter{IDs: []string{uuidx.NewV4().String()}})
336+
require.NoError(t, err)
337+
require.Len(t, cs, 0)
338+
assert.True(t, nextPage.IsLast())
339+
})
340+
316341
testHelperUpdateClient(t, ctx, t1, t1c1)
317342
testHelperUpdateClient(t, ctx, t2, &t2c1)
318343

persistence/sql/persister_client.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,9 @@ func (p *Persister) GetClients(ctx context.Context, filters client.Filter) (cs [
160160
if filters.Owner != "" {
161161
query.Where("owner = ?", filters.Owner)
162162
}
163+
if len(filters.IDs) > 0 {
164+
query.Where("id IN (?)", filters.IDs)
165+
}
163166

164167
if err := query.All(&cs); err != nil {
165168
return nil, nil, sqlcon.HandleError(err)

0 commit comments

Comments
 (0)