Dual-write tracker patterns in cookie pattern CRUD
CookiePattern Create/Update/Delete/Move now also write the corresponding TrackerPattern (TrackerType=COOKIE) so the tracker-pattern-based snapshot picks up the changes and draft versions are created correctly. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -1211,6 +1211,26 @@ func (s *Service) CreateCookiePattern(
|
|||||||
return fmt.Errorf("cannot insert cookie pattern: %w", err)
|
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 {
|
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, category.CookieBannerID); err != nil {
|
||||||
return fmt.Errorf("cannot ensure draft version: %w", err)
|
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)
|
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 !staysExcluded {
|
||||||
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
||||||
return fmt.Errorf("cannot ensure draft version: %w", err)
|
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)
|
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 !wasExcluded {
|
||||||
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
||||||
return fmt.Errorf("cannot ensure draft version: %w", err)
|
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)
|
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
|
var banner coredata.CookieBanner
|
||||||
if err := banner.LoadByID(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
if err := banner.LoadByID(ctx, tx, scope, pattern.CookieBannerID); err != nil {
|
||||||
return fmt.Errorf("cannot load cookie banner: %w", err)
|
return fmt.Errorf("cannot load cookie banner: %w", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user