Add cookie banner and category dataloaders

Batch-load CookieBanner and CookieCategory entities via
dataloadgen instead of making individual service calls in
GraphQL resolvers, matching the existing dataloader pattern
used for organizations, frameworks, etc.

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-04-27 19:21:33 +04:00
parent d9b0d5f44d
commit b9835f0f25
7 changed files with 217 additions and 36 deletions

View File

@@ -29,11 +29,11 @@ func (r *cookieResolver) CookieCategory(ctx context.Context, obj *types.Cookie)
return nil, err
}
scope := coredata.NewScopeFromObjectID(obj.CookieCategory.ID)
loaders := dataloader.FromContext(ctx)
category, err := r.cookieBanner.GetCookieCategory(ctx, scope, obj.CookieCategory.ID)
category, err := loaders.CookieCategory.Load(ctx, obj.CookieCategory.ID)
if err != nil {
if errors.Is(err, cookiebanner.ErrCategoryNotFound) {
if errors.Is(err, coredata.ErrResourceNotFound) || errors.Is(err, dataloadgen.ErrNotFound) {
return nil, nil
}
r.logger.ErrorCtx(ctx, "cannot get cookie category", log.Error(err))
@@ -277,11 +277,11 @@ func (r *cookieCategoryResolver) CookieBanner(ctx context.Context, obj *types.Co
return nil, err
}
scope := coredata.NewScopeFromObjectID(obj.CookieBanner.ID)
loaders := dataloader.FromContext(ctx)
banner, err := r.cookieBanner.GetCookieBanner(ctx, scope, obj.CookieBanner.ID)
banner, err := loaders.CookieBanner.Load(ctx, obj.CookieBanner.ID)
if err != nil {
if errors.Is(err, cookiebanner.ErrBannerNotFound) {
if errors.Is(err, coredata.ErrResourceNotFound) || errors.Is(err, dataloadgen.ErrNotFound) {
return nil, nil
}
r.logger.ErrorCtx(ctx, "cannot get cookie banner", log.Error(err))