Delegate ReportDetectedCookies to ReportDetectedTrackers

The compat endpoint now writes to the unified tracker tables
instead of the legacy cookies + cookie_patterns tables.

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-05-05 15:30:52 +04:00
parent f046c2967e
commit 84120a07fc

View File

@@ -2282,97 +2282,9 @@ func (s *Service) ReportDetectedCookies(
bannerID gid.GID,
req ReportDetectedCookiesRequest,
) error {
return s.pg.WithTx(
ctx,
func(ctx context.Context, tx pg.Tx) error {
scope := coredata.NewScopeFromObjectID(bannerID)
var banner coredata.CookieBanner
if err := banner.LoadByID(ctx, tx, scope, bannerID); err != nil {
if errors.Is(err, coredata.ErrResourceNotFound) {
return ErrBannerNotFound
}
return fmt.Errorf("cannot load cookie banner: %w", err)
}
var uncategorised coredata.CookieCategory
if err := uncategorised.LoadUncategorisedByCookieBannerID(ctx, tx, scope, banner.ID); err != nil {
return fmt.Errorf("cannot load uncategorised category: %w", err)
}
inserted := 0
now := time.Now()
for _, dc := range req.Cookies {
var matchedPattern coredata.CookiePattern
err := matchedPattern.FindMatchingPattern(ctx, tx, scope, banner.ID, dc.Name)
if err != nil && !errors.Is(err, coredata.ErrResourceNotFound) {
return fmt.Errorf("cannot find matching pattern: %w", err)
}
if err == nil && matchedPattern.Excluded {
continue
}
patternID := matchedPattern.ID
if errors.Is(err, coredata.ErrResourceNotFound) {
newPattern := &coredata.CookiePattern{
ID: gid.New(scope.GetTenantID(), coredata.CookiePatternEntityType),
OrganizationID: banner.OrganizationID,
CookieBannerID: banner.ID,
CookieCategoryID: uncategorised.ID,
Pattern: dc.Name,
MatchType: coredata.CookiePatternMatchTypeExact,
DisplayName: dc.Name,
MaxAgeSeconds: dc.MaxAgeSeconds,
Description: "",
Source: dc.Source,
CreatedAt: now,
UpdatedAt: now,
}
wasInserted, err := newPattern.InsertIfNotExists(ctx, tx, scope)
if err != nil {
return fmt.Errorf("cannot insert cookie pattern: %w", err)
}
if wasInserted {
patternID = newPattern.ID
inserted++
} else {
var existingPattern coredata.CookiePattern
if err := existingPattern.LoadByBannerIDAndPattern(ctx, tx, scope, banner.ID, dc.Name); err != nil {
return fmt.Errorf("cannot load existing cookie pattern: %w", err)
}
patternID = existingPattern.ID
}
}
cookie := &coredata.Cookie{
ID: gid.New(scope.GetTenantID(), coredata.CookieEntityType),
OrganizationID: banner.OrganizationID,
CookieBannerID: banner.ID,
CookiePatternID: patternID,
Name: dc.Name,
MaxAgeSeconds: dc.MaxAgeSeconds,
Source: dc.Source,
LastDetectedAt: now,
CreatedAt: now,
UpdatedAt: now,
}
if _, err := cookie.InsertIfNotExists(ctx, tx, scope); err != nil {
return fmt.Errorf("cannot insert detected cookie: %w", err)
}
}
if inserted > 0 {
if err := banner.SetPatternAnalysisRequested(ctx, tx); err != nil {
return fmt.Errorf("cannot request pattern analysis: %w", err)
}
}
return nil
},
)
return s.ReportDetectedTrackers(ctx, bannerID, ReportDetectedTrackersRequest{
Cookies: req.Cookies,
})
}
func (s *Service) ReportDetectedTrackers(