package usecase

import (
	"context"

	"haixun-backend/internal/model/brand/domain/entity"
)

type BrandSummary struct {
	ID             string
	DisplayName    string
	SeedQuery      string
	Brief          string
	ProductBrief   string
	ProductContext string
	TargetAudience string
	Goals          string
	ResearchMap    entity.ResearchMap
	CreateAt       int64
	UpdateAt       int64
}

type CreateRequest struct {
	TenantID       string
	OwnerUID       string
	DisplayName    string
	SeedQuery      string
	Brief          string
	ProductContext string
	ProductBrief   string
	TargetAudience string
	Goals          string
	ResearchMap    *entity.ResearchMap
}

type UpdateRequest struct {
	TenantID string
	OwnerUID string
	BrandID  string
	Patch    BrandPatch
}

type BrandPatch struct {
	DisplayName    *string
	SeedQuery      *string
	Brief          *string
	ProductBrief   *string
	ProductContext *string
	TargetAudience *string
	Goals          *string
	ResearchMap    *entity.ResearchMap
}

type ListResult struct {
	List []BrandSummary
}

type UseCase interface {
	List(ctx context.Context, tenantID, ownerUID string) (*ListResult, error)
	Create(ctx context.Context, req CreateRequest) (*BrandSummary, error)
	Get(ctx context.Context, tenantID, ownerUID, brandID string) (*BrandSummary, error)
	Update(ctx context.Context, req UpdateRequest) (*BrandSummary, error)
	Delete(ctx context.Context, tenantID, ownerUID, brandID string) error
}
