package usecase

import "context"

type CRMContactSummary struct {
	ID              string
	BrandID         string
	AuthorID        string
	AuthorName      string
	AuthorAvatar    string
	AuthorFollowers int
	ScanPostID      string
	Notes           string
	Tags            []string
	Status          string
	OutreachCount   int
	LastContactedAt int64
	CreateAt        int64
	UpdateAt        int64
}

type ListRequest struct {
	TenantID string
	OwnerUID string
	BrandID  string
	Status   string
	Tag      string
	Page     int
	PageSize int
}

type UpdateRequest struct {
	TenantID  string
	OwnerUID  string
	ContactID string
	Notes     *string
	Tags      *[]string
	Status    *string
}

type UseCase interface {
	Create(ctx context.Context, tenantID, ownerUID, brandID, authorID, authorName string) (*CRMContactSummary, error)
	Get(ctx context.Context, tenantID, ownerUID, contactID string) (*CRMContactSummary, error)
	Update(ctx context.Context, req UpdateRequest) (*CRMContactSummary, error)
	Delete(ctx context.Context, tenantID, ownerUID, contactID string) error
	List(ctx context.Context, req ListRequest) ([]CRMContactSummary, int, error)
}
