package api

import "time"

// API request/response models
type ContentItem struct {
	ID           string    `json:"id"`
	SiteID       string    `json:"site_id"`
	Value        string    `json:"value"`
	Type         string    `json:"type"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
	LastEditedBy string    `json:"last_edited_by"`
}

type ContentVersion struct {
	VersionID int64     `json:"version_id"`
	ContentID string    `json:"content_id"`
	SiteID    string    `json:"site_id"`
	Value     string    `json:"value"`
	Type      string    `json:"type"`
	CreatedAt time.Time `json:"created_at"`
	CreatedBy string    `json:"created_by"`
}

type ContentResponse struct {
	Content []ContentItem `json:"content"`
}

type ContentVersionsResponse struct {
	Versions []ContentVersion `json:"versions"`
}

// Element context for backend ID generation
type ElementContext struct {
	Tag             string   `json:"tag"`
	Classes         []string `json:"classes"`
	OriginalContent string   `json:"original_content"`
	ParentContext   string   `json:"parent_context"`
	Purpose         string   `json:"purpose"`
}

// Request models
type CreateContentRequest struct {
	HTMLMarkup string `json:"html_markup"`          // HTML markup of the element
	FilePath   string `json:"file_path"`            // File path for consistent ID generation
	Value      string `json:"value"`                // Content value
	Type       string `json:"type"`                 // Content type
	SiteID     string `json:"site_id,omitempty"`    // Site identifier
	CreatedBy  string `json:"created_by,omitempty"` // User who created the content
}

type RollbackContentRequest struct {
	VersionID    int64  `json:"version_id"`
	RolledBackBy string `json:"rolled_back_by,omitempty"`
}
