package engine
import (
"golang.org/x/net/html"
)
// ProcessMode defines how the engine should process content
type ProcessMode int
const (
// Enhancement mode: Parse + Generate IDs + Inject content + Add editor assets
Enhancement ProcessMode = iota
// IDGeneration mode: Parse + Generate IDs only (for API)
IDGeneration
// ContentInjection mode: Parse + Generate IDs + Inject content only
ContentInjection
)
// ContentInput represents input to the content engine
type ContentInput struct {
HTML []byte // Raw HTML or markup
FilePath string // File context (e.g., "index.html")
SiteID string // Site identifier
Mode ProcessMode // Processing mode
}
// ContentResult represents the result of content processing
type ContentResult struct {
Document *html.Node // Processed HTML document
Elements []ProcessedElement // All processed elements
GeneratedIDs map[string]string // Map of element positions to generated IDs
}
// ProcessedElement represents an element that has been processed
type ProcessedElement struct {
Node *html.Node // HTML node
ID string // Generated content ID
Type string // Content type (text, markdown, link)
Content string // Injected content (if any)
Generated bool // Whether ID was generated (vs existing)
Tag string // Element tag name
Classes []string // Element CSS classes
}
// ContentClient interface for accessing content data
// This will be implemented by database clients
type ContentClient interface {
GetContent(siteID, contentID string) (*ContentItem, error)
GetBulkContent(siteID string, contentIDs []string) (map[string]ContentItem, error)
}
// ContentItem represents a piece of content from the database
type ContentItem struct {
ID string
SiteID string
Value string
Type string
LastEditedBy string
}