monorepo/cloud/maplepress-backend/internal/usecase/page/increment_search_count.go

52 lines
1.4 KiB
Go

package page
import (
"context"
"go.uber.org/zap"
domainsite "codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/internal/domain/site"
)
// IncrementSearchCountUseCase increments the search request counter for a site
type IncrementSearchCountUseCase struct {
siteRepo domainsite.Repository
logger *zap.Logger
}
// ProvideIncrementSearchCountUseCase creates a new IncrementSearchCountUseCase
func ProvideIncrementSearchCountUseCase(
siteRepo domainsite.Repository,
logger *zap.Logger,
) *IncrementSearchCountUseCase {
return &IncrementSearchCountUseCase{
siteRepo: siteRepo,
logger: logger,
}
}
// Execute increments the search count and updates the site usage tracking
func (uc *IncrementSearchCountUseCase) Execute(
ctx context.Context,
site *domainsite.Site,
) error {
// Increment search request count
site.IncrementSearchCount()
uc.logger.Info("incremented search count",
zap.String("site_id", site.ID.String()),
zap.Int64("new_count", site.SearchRequestsCount))
// Update usage tracking in database
if err := uc.siteRepo.UpdateUsage(ctx, site); err != nil {
uc.logger.Error("failed to update search usage", zap.Error(err))
// Don't fail the search, just log the error and return
return err
}
uc.logger.Info("search usage updated successfully",
zap.String("site_id", site.ID.String()),
zap.Int64("search_count", site.SearchRequestsCount))
return nil
}