aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg/db
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-03-11 21:38:10 +0100
committerAleksandr Nogikh <nogikh@google.com>2025-03-11 21:04:55 +0000
commitee70e6dbc377b7957fe85c173da580f033ee93a3 (patch)
treeb5b30a5a6af477b1de5c4775f51e9efcef71d4ed /syz-cluster/pkg/db
parentf9a86f79173ee73cd60ab4b2ff04d49764e53644 (diff)
syz-cluster: display and filter by Cc list
For each series, display the Cc'd email list and let users filter the patch series list by those addresses.
Diffstat (limited to 'syz-cluster/pkg/db')
-rw-r--r--syz-cluster/pkg/db/series_repo.go14
-rw-r--r--syz-cluster/pkg/db/series_repo_test.go16
-rw-r--r--syz-cluster/pkg/db/session_repo_test.go2
3 files changed, 25 insertions, 7 deletions
diff --git a/syz-cluster/pkg/db/series_repo.go b/syz-cluster/pkg/db/series_repo.go
index 018d32d8f..affe7f9cf 100644
--- a/syz-cluster/pkg/db/series_repo.go
+++ b/syz-cluster/pkg/db/series_repo.go
@@ -130,20 +130,28 @@ type SeriesWithSession struct {
Session *Session
}
+type SeriesFilter struct {
+ Cc string
+}
+
// ListLatest() returns the list of series ordered by the decreasing PublishedAt value.
-func (repo *SeriesRepository) ListLatest(ctx context.Context,
+func (repo *SeriesRepository) ListLatest(ctx context.Context, filter SeriesFilter,
maxPublishedAt time.Time, limit int) ([]*SeriesWithSession, error) {
ro := repo.client.ReadOnlyTransaction()
defer ro.Close()
stmt := spanner.Statement{
- SQL: "SELECT * FROM Series",
+ SQL: "SELECT * FROM Series WHERE 1=1",
Params: map[string]interface{}{},
}
if !maxPublishedAt.IsZero() {
- stmt.SQL += " WHERE PublishedAt < @toTime"
+ stmt.SQL += " AND PublishedAt < @toTime"
stmt.Params["toTime"] = maxPublishedAt
}
+ if filter.Cc != "" {
+ stmt.SQL += " AND @cc IN UNNEST(Cc)"
+ stmt.Params["cc"] = filter.Cc
+ }
stmt.SQL += " ORDER BY PublishedAt DESC"
if limit > 0 {
stmt.SQL += " LIMIT @limit"
diff --git a/syz-cluster/pkg/db/series_repo_test.go b/syz-cluster/pkg/db/series_repo_test.go
index c01049e5c..f9462dd90 100644
--- a/syz-cluster/pkg/db/series_repo_test.go
+++ b/syz-cluster/pkg/db/series_repo_test.go
@@ -58,16 +58,19 @@ func TestSeriesRepositoryList(t *testing.T) {
ExtID: "series-3",
Title: "Series 3",
PublishedAt: time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC),
+ Cc: []string{"a"},
},
{
ExtID: "series-1",
Title: "Series 1",
PublishedAt: time.Date(2020, time.January, 1, 1, 0, 0, 0, time.UTC),
+ Cc: []string{"a", "b"},
},
{
ExtID: "series-2",
Title: "Series 2",
PublishedAt: time.Date(2020, time.January, 1, 2, 0, 0, 0, time.UTC),
+ Cc: []string{"c"},
},
} {
err := repo.Insert(ctx, series, func() ([]*Patch, error) { return nil, nil })
@@ -81,13 +84,13 @@ func TestSeriesRepositoryList(t *testing.T) {
})
t.Run("all", func(t *testing.T) {
- list, err := repo.ListLatest(ctx, time.Time{}, 0)
+ list, err := repo.ListLatest(ctx, SeriesFilter{}, time.Time{}, 0)
assert.NoError(t, err)
assert.Len(t, list, 3)
})
t.Run("with_limit", func(t *testing.T) {
- list, err := repo.ListLatest(ctx, time.Time{}, 2)
+ list, err := repo.ListLatest(ctx, SeriesFilter{}, time.Time{}, 2)
assert.NoError(t, err)
assert.Len(t, list, 2)
assert.Equal(t, "Series 3", list[0].Series.Title)
@@ -96,12 +99,19 @@ func TestSeriesRepositoryList(t *testing.T) {
t.Run("with_from", func(t *testing.T) {
// Skips the latest series.
- list, err := repo.ListLatest(ctx, time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC), 0)
+ list, err := repo.ListLatest(ctx, SeriesFilter{}, time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC), 0)
assert.NoError(t, err)
assert.Len(t, list, 2)
assert.Equal(t, "Series 2", list[0].Series.Title)
assert.Equal(t, "Series 1", list[1].Series.Title)
})
+
+ t.Run("filter_by_cc", func(t *testing.T) {
+ list, err := repo.ListLatest(ctx,
+ SeriesFilter{Cc: "a"}, time.Time{}, 0)
+ assert.NoError(t, err)
+ assert.Len(t, list, 2)
+ })
}
func TestSeriesRepositoryUpdate(t *testing.T) {
diff --git a/syz-cluster/pkg/db/session_repo_test.go b/syz-cluster/pkg/db/session_repo_test.go
index 2a3b9bd69..c6f79f975 100644
--- a/syz-cluster/pkg/db/session_repo_test.go
+++ b/syz-cluster/pkg/db/session_repo_test.go
@@ -20,7 +20,7 @@ func TestSeriesInsertSession(t *testing.T) {
assert.NoError(t, err)
withSession := func(need int) {
- list, err := seriesRepo.ListLatest(ctx, time.Time{}, 10)
+ list, err := seriesRepo.ListLatest(ctx, SeriesFilter{}, time.Time{}, 10)
assert.NoError(t, err)
var cnt int
for _, item := range list {