52 lines
1.4 KiB
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
|
|
}
|