diff --git a/pkg/service/annotation.go b/pkg/service/annotation.go index 0510487b04..476461e7e8 100644 --- a/pkg/service/annotation.go +++ b/pkg/service/annotation.go @@ -30,10 +30,11 @@ func (svc AnnotationsService) CreateAnnotation(ctx context.Context, params model tx := svc.db.WithContext(ctx) // Upsert - if err := tx.Where(model.CreateAnnotation{ - AppName: params.AppName, Timestamp: params.Timestamp, - }).Attrs(u).FirstOrCreate(&u).Error; err != nil { - return nil, err + if tx.Where(model.CreateAnnotation{ + AppName: params.AppName, + Timestamp: params.Timestamp, + }).Updates(&u).RowsAffected == 0 { + return &u, tx.Create(&u).Error } return &u, nil diff --git a/pkg/service/annotation_test.go b/pkg/service/annotation_test.go index 587c3695e2..55c1efe905 100644 --- a/pkg/service/annotation_test.go +++ b/pkg/service/annotation_test.go @@ -61,7 +61,11 @@ var _ = Describe("AnnotationsService", func() { }) It("upserts", func() { - annotation, err := svc.CreateAnnotation(context.Background(), p) + annotation, err := svc.CreateAnnotation(context.Background(), model.CreateAnnotation{ + AppName: p.AppName, + Timestamp: p.Timestamp, + Content: "mycontent updated", + }) Expect(err).ToNot(HaveOccurred()) Expect(annotation).ToNot(BeNil()) @@ -70,6 +74,7 @@ var _ = Describe("AnnotationsService", func() { time.Now().Add(-time.Hour), time.Now()) + Expect(annotations[0].Content).To(Equal("mycontent updated")) Expect(err).ToNot(HaveOccurred()) Expect(annotations).ToNot(BeEmpty()) Expect(len(annotations)).To(Equal(1))