package usecase

import "context"

type PublishAnalyticsSummary struct {
	ID              string
	MediaID         string
	Permalink       string
	PublishedAt     int64
	Checkpoint      string
	LikeCount       int
	ReplyCount      int
	RepostCount     int
	QuoteCount      int
	ViewCount       int
	ShareCount      int
	ImpressionCount int
	ReachCount      int
	CheckedAt       int64
	CreateAt        int64
}

type ScheduleCheckpointsRequest struct {
	TenantID    string
	OwnerUID    string
	AccountID   string
	MediaID     string
	Permalink   string
	PublishedAt int64
}

type UseCase interface {
	RecordCheckpoint(ctx context.Context, tenantID, ownerUID string, summary PublishAnalyticsSummary) (*PublishAnalyticsSummary, error)
	ListByMedia(ctx context.Context, tenantID, ownerUID, mediaID string) ([]PublishAnalyticsSummary, error)
	ScheduleCheckpoints(ctx context.Context, req ScheduleCheckpointsRequest) error
}
