diff --git a/pkg/cookiebanner/service.go b/pkg/cookiebanner/service.go index 982393ddc..c8449aceb 100644 --- a/pkg/cookiebanner/service.go +++ b/pkg/cookiebanner/service.go @@ -1211,6 +1211,26 @@ func (s *Service) CreateCookiePattern( return fmt.Errorf("cannot insert cookie pattern: %w", err) } + src := coredata.CookieSourceScript + tp := &coredata.TrackerPattern{ + ID: gid.New(scope.GetTenantID(), coredata.TrackerPatternEntityType), + OrganizationID: category.OrganizationID, + CookieBannerID: category.CookieBannerID, + CookieCategoryID: category.ID, + TrackerType: coredata.TrackerTypeCookie, + Pattern: req.Pattern, + MatchType: req.MatchType, + DisplayName: req.DisplayName, + MaxAgeSeconds: req.MaxAgeSeconds, + Description: req.Description, + Source: &src, + CreatedAt: now, + UpdatedAt: now, + } + if _, err := tp.InsertIfNotExists(ctx, tx, scope); err != nil { + return fmt.Errorf("cannot insert tracker pattern: %w", err) + } + if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, category.CookieBannerID); err != nil { return fmt.Errorf("cannot ensure draft version: %w", err) } @@ -1279,6 +1299,26 @@ func (s *Service) UpdateCookiePattern( return fmt.Errorf("cannot update cookie pattern: %w", err) } + var tp coredata.TrackerPattern + if err := tp.LoadByBannerIDTypeAndPattern(ctx, tx, scope, pattern.CookieBannerID, coredata.TrackerTypeCookie, pattern.Pattern); err == nil { + if req.DisplayName != nil { + tp.DisplayName = *req.DisplayName + } + if req.MaxAgeSeconds != nil { + tp.MaxAgeSeconds = *req.MaxAgeSeconds + } + if req.Description != nil { + tp.Description = *req.Description + } + if req.Excluded != nil { + tp.Excluded = *req.Excluded + } + tp.UpdatedAt = time.Now() + if err := tp.Update(ctx, tx, scope); err != nil { + return fmt.Errorf("cannot update tracker pattern: %w", err) + } + } + if !staysExcluded { if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil { return fmt.Errorf("cannot ensure draft version: %w", err) @@ -1317,6 +1357,13 @@ func (s *Service) DeleteCookiePattern( return fmt.Errorf("cannot delete cookie pattern: %w", err) } + var tp coredata.TrackerPattern + if err := tp.LoadByBannerIDTypeAndPattern(ctx, tx, scope, pattern.CookieBannerID, coredata.TrackerTypeCookie, pattern.Pattern); err == nil { + if err := tp.Delete(ctx, tx, scope); err != nil { + return fmt.Errorf("cannot delete tracker pattern: %w", err) + } + } + if !wasExcluded { if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil { return fmt.Errorf("cannot ensure draft version: %w", err) @@ -1375,6 +1422,15 @@ func (s *Service) MoveCookiePatternToCategory( return fmt.Errorf("cannot update cookie pattern: %w", err) } + var tp coredata.TrackerPattern + if err := tp.LoadByBannerIDTypeAndPattern(ctx, tx, scope, pattern.CookieBannerID, coredata.TrackerTypeCookie, pattern.Pattern); err == nil { + tp.CookieCategoryID = target.ID + tp.UpdatedAt = time.Now() + if err := tp.Update(ctx, tx, scope); err != nil { + return fmt.Errorf("cannot update tracker pattern: %w", err) + } + } + var banner coredata.CookieBanner if err := banner.LoadByID(ctx, tx, scope, pattern.CookieBannerID); err != nil { return fmt.Errorf("cannot load cookie banner: %w", err)