Implement complete collection persistence with database-backed survival across server restarts

• Add full multi-table schema for collections with normalized design (collections, collection_templates, collection_items, collection_item_versions)
• Implement collection detection and processing in enhancement pipeline for .insertr-add elements
• Add template extraction and storage from existing HTML children with multi-variant support
• Enable collection reconstruction from database on server restart with proper DOM rebuilding
• Extend ContentClient interface with collection operations and full database integration
• Update enhance command to use engine.DatabaseClient for collection persistence support
This commit is contained in:
2025-09-22 18:29:58 +02:00
parent b25663f76b
commit 2315ba4750
36 changed files with 4356 additions and 46 deletions

View File

@@ -8,6 +8,49 @@ import (
"database/sql"
)
type Collection struct {
ID string `json:"id"`
SiteID string `json:"site_id"`
ContainerHtml string `json:"container_html"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
LastEditedBy string `json:"last_edited_by"`
}
type CollectionItem struct {
ItemID string `json:"item_id"`
CollectionID string `json:"collection_id"`
SiteID string `json:"site_id"`
TemplateID int32 `json:"template_id"`
HtmlContent string `json:"html_content"`
Position int32 `json:"position"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
LastEditedBy string `json:"last_edited_by"`
}
type CollectionItemVersion struct {
VersionID int32 `json:"version_id"`
ItemID string `json:"item_id"`
CollectionID string `json:"collection_id"`
SiteID string `json:"site_id"`
HtmlContent string `json:"html_content"`
TemplateID int32 `json:"template_id"`
Position int32 `json:"position"`
CreatedAt int64 `json:"created_at"`
CreatedBy string `json:"created_by"`
}
type CollectionTemplate struct {
TemplateID int32 `json:"template_id"`
CollectionID string `json:"collection_id"`
SiteID string `json:"site_id"`
Name string `json:"name"`
HtmlTemplate string `json:"html_template"`
IsDefault bool `json:"is_default"`
CreatedAt int64 `json:"created_at"`
}
type Content struct {
ID string `json:"id"`
SiteID string `json:"site_id"`