aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg/db
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-06-28 17:30:50 +0200
committerAleksandr Nogikh <nogikh@google.com>2025-07-02 09:13:24 +0000
commit8eca022fb899f81facfd753a892d33ad794e2846 (patch)
tree38e3deed52689f467241e50c885c1c59582d75a0 /syz-cluster/pkg/db
parentd6d4e158298e946390e54d87a0a808a4238a24b4 (diff)
syz-cluster: make report reply tracking more flexible
Replace an UpdateReport() call with a RecordReply(). This will eventually allow us to support the email sender implementations for which we do not immediately know the MessageID of the reported message.
Diffstat (limited to 'syz-cluster/pkg/db')
-rw-r--r--syz-cluster/pkg/db/entities.go1
-rw-r--r--syz-cluster/pkg/db/migrations/1_initialize.down.sql1
-rw-r--r--syz-cluster/pkg/db/migrations/1_initialize.up.sql2
-rw-r--r--syz-cluster/pkg/db/report_repo.go11
-rw-r--r--syz-cluster/pkg/db/report_repo_test.go13
-rw-r--r--syz-cluster/pkg/db/spanner.go7
6 files changed, 0 insertions, 35 deletions
diff --git a/syz-cluster/pkg/db/entities.go b/syz-cluster/pkg/db/entities.go
index 13c440926..c914d7361 100644
--- a/syz-cluster/pkg/db/entities.go
+++ b/syz-cluster/pkg/db/entities.go
@@ -137,7 +137,6 @@ type SessionReport struct {
SessionID string `spanner:"SessionID"`
ReportedAt spanner.NullTime `spanner:"ReportedAt"`
Moderation bool `spanner:"Moderation"`
- MessageID string `spanner:"MessageID"`
Reporter string `spanner:"Reporter"`
}
diff --git a/syz-cluster/pkg/db/migrations/1_initialize.down.sql b/syz-cluster/pkg/db/migrations/1_initialize.down.sql
index 04bdb97e2..64c1fbb35 100644
--- a/syz-cluster/pkg/db/migrations/1_initialize.down.sql
+++ b/syz-cluster/pkg/db/migrations/1_initialize.down.sql
@@ -20,7 +20,6 @@ DROP INDEX SessionsByFinishedAt;
DROP INDEX NoDupFindings;
DROP INDEX NoDupSessionReports;
DROP INDEX SessionReportsByStatus;
-DROP INDEX SessionReportsByMessageID;
DROP TABLE ReportReplies;
DROP TABLE Findings;
diff --git a/syz-cluster/pkg/db/migrations/1_initialize.up.sql b/syz-cluster/pkg/db/migrations/1_initialize.up.sql
index baec817cb..139a9c21f 100644
--- a/syz-cluster/pkg/db/migrations/1_initialize.up.sql
+++ b/syz-cluster/pkg/db/migrations/1_initialize.up.sql
@@ -107,14 +107,12 @@ CREATE TABLE SessionReports (
SessionID STRING(36) NOT NULL, -- UUID
ReportedAt TIMESTAMP,
Moderation BOOL,
- MessageID STRING(512),
Reporter STRING(256),
CONSTRAINT FK_SessionReports FOREIGN KEY (SessionID) REFERENCES Sessions (ID),
) PRIMARY KEY(ID);
CREATE UNIQUE INDEX NoDupSessionReports ON SessionReports(SessionID, Moderation);
CREATE INDEX SessionReportsByStatus ON SessionReports (Reporter, ReportedAt);
-CREATE INDEX SessionReportsByMessageID ON SessionReports(Reporter, MessageID);
-- Replies on a session report.
CREATE TABLE ReportReplies (
diff --git a/syz-cluster/pkg/db/report_repo.go b/syz-cluster/pkg/db/report_repo.go
index 37a09a746..4e039c4a7 100644
--- a/syz-cluster/pkg/db/report_repo.go
+++ b/syz-cluster/pkg/db/report_repo.go
@@ -44,14 +44,3 @@ func (repo *ReportRepository) ListNotReported(ctx context.Context, reporter stri
addLimit(&stmt, limit)
return repo.readEntities(ctx, stmt)
}
-
-func (repo *ReportRepository) FindByMessageID(ctx context.Context, reporter, messageID string) (*SessionReport, error) {
- stmt := spanner.Statement{
- SQL: "SELECT * FROM `SessionReports` WHERE `Reporter` = @reporter AND `MessageID` = @messageID",
- Params: map[string]interface{}{
- "reporter": reporter,
- "messageID": messageID,
- },
- }
- return repo.readEntity(ctx, stmt)
-}
diff --git a/syz-cluster/pkg/db/report_repo_test.go b/syz-cluster/pkg/db/report_repo_test.go
index a0cee2a11..a9e23fd75 100644
--- a/syz-cluster/pkg/db/report_repo_test.go
+++ b/syz-cluster/pkg/db/report_repo_test.go
@@ -40,30 +40,17 @@ func TestReportRepository(t *testing.T) {
assert.NoError(t, err)
assert.Len(t, list, 3)
- const messageID = "message-id"
err = reportRepo.Update(ctx, keys[0], func(rep *SessionReport) error {
rep.SetReportedAt(time.Now())
- rep.MessageID = messageID
return nil
})
assert.NoError(t, err)
-
t.Run("not-reported-count", func(t *testing.T) {
// Now one less.
list, err := reportRepo.ListNotReported(ctx, dummyReporter, 10)
assert.NoError(t, err)
assert.Len(t, list, 2)
})
- t.Run("find-by-id-found", func(t *testing.T) {
- report, err := reportRepo.FindByMessageID(ctx, dummyReporter, messageID)
- assert.NoError(t, err)
- assert.NotNil(t, report)
- })
- t.Run("find-by-id-empty", func(t *testing.T) {
- report, err := reportRepo.FindByMessageID(ctx, dummyReporter, "non-existing-id")
- assert.NoError(t, err)
- assert.Nil(t, report)
- })
}
func TestSessionsWithoutReports(t *testing.T) {
diff --git a/syz-cluster/pkg/db/spanner.go b/syz-cluster/pkg/db/spanner.go
index 9bdeee53b..1aee715f8 100644
--- a/syz-cluster/pkg/db/spanner.go
+++ b/syz-cluster/pkg/db/spanner.go
@@ -343,10 +343,3 @@ func (g *genericEntityOps[EntityType, KeyType]) readEntities(ctx context.Context
defer iter.Stop()
return readEntities[EntityType](iter)
}
-
-func (g *genericEntityOps[EntityType, KeyType]) readEntity(ctx context.Context,
- stmt spanner.Statement) (*EntityType, error) {
- iter := g.client.Single().Query(ctx, stmt)
- defer iter.Stop()
- return readOne[EntityType](iter)
-}