Files
tgex-backend/tg_parser/internal/usecase/fetch_views.go
Artem Tsyrulnikov 62e8f98429 refactor
2026-01-18 14:10:13 +03:00

47 lines
886 B
Go

package usecase
import (
"context"
"time"
"github.com/rs/zerolog/log"
"github.com/TelegramExchange/tgex-backend/tg_parser/internal/domain"
)
func (uc *UseCase) FetchViews(ctx context.Context) error {
channels, err := uc.database.GetChannelsWithTrackedPosts(ctx)
if err != nil {
return err
}
for _, channel := range channels {
posts, err := uc.database.GetTrackedPosts(ctx, channel)
if err != nil {
return err
}
err = uc.telegram.UpdatePostsViews(ctx, channel, posts)
if err != nil {
return err
}
for _, p := range posts {
v := domain.ViewsSnapshot{
ViewsCount: p.Views,
FetchedAt: time.Now().UTC(),
PostID: p.ID,
}
err = uc.database.CreateViewsSnapshot(ctx, v)
if err != nil {
return err
}
log.Info().Msgf("New ViewsSnapshot: %s - Post ID: %d, Views: %d", p.Link, p.MessageID, p.Views)
}
}
return nil
}