• 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
31 lines
1.6 KiB
SQL
31 lines
1.6 KiB
SQL
-- Collection item versions table queries
|
|
|
|
-- name: CreateCollectionItemVersion :exec
|
|
INSERT INTO collection_item_versions (item_id, collection_id, site_id, html_content, template_id, position, created_by)
|
|
VALUES (sqlc.arg(item_id), sqlc.arg(collection_id), sqlc.arg(site_id), sqlc.arg(html_content), sqlc.arg(template_id), sqlc.arg(position), sqlc.arg(created_by));
|
|
|
|
-- name: GetCollectionItemVersionHistory :many
|
|
SELECT version_id, item_id, collection_id, site_id, html_content, template_id, position, created_at, created_by
|
|
FROM collection_item_versions
|
|
WHERE item_id = sqlc.arg(item_id) AND collection_id = sqlc.arg(collection_id) AND site_id = sqlc.arg(site_id)
|
|
ORDER BY created_at DESC
|
|
LIMIT sqlc.arg(limit_count);
|
|
|
|
-- name: GetCollectionItemVersion :one
|
|
SELECT version_id, item_id, collection_id, site_id, html_content, template_id, position, created_at, created_by
|
|
FROM collection_item_versions
|
|
WHERE version_id = sqlc.arg(version_id);
|
|
|
|
-- name: GetAllCollectionItemVersionsForSite :many
|
|
SELECT
|
|
civ.version_id, civ.item_id, civ.collection_id, civ.site_id, civ.html_content, civ.template_id, civ.position, civ.created_at, civ.created_by,
|
|
ci.html_content as current_html_content, ci.position as current_position
|
|
FROM collection_item_versions civ
|
|
LEFT JOIN collection_items ci ON civ.item_id = ci.item_id AND civ.collection_id = ci.collection_id AND civ.site_id = ci.site_id
|
|
WHERE civ.site_id = sqlc.arg(site_id)
|
|
ORDER BY civ.created_at DESC
|
|
LIMIT sqlc.arg(limit_count);
|
|
|
|
-- name: DeleteOldCollectionItemVersions :exec
|
|
DELETE FROM collection_item_versions
|
|
WHERE created_at < sqlc.arg(created_before) AND site_id = sqlc.arg(site_id); |