package usecase import ( "context" "time" "github.com/rs/zerolog/log" "github.com/TelegramExchange/tgex-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 }