Major architectural simplification removing content type complexity: Database Schema: - Remove 'type' field from content and content_versions tables - Simplify to pure HTML storage with html_content + original_template - Regenerate all sqlc models for SQLite and PostgreSQL API Simplification: - Remove content type routing and validation - Eliminate type-specific handlers (text/markdown/structured) - Unified HTML-first approach for all content operations - Simplify CreateContent and UpdateContent to HTML-only Backend Enhancements: - Update enhancer to only generate data-content-id (no data-content-type) - Improve container expansion utilities with comprehensive block/inline rules - Add Phase 3 preparation with boundary-respecting traversal logic - Strengthen element classification for viable children detection Documentation: - Update TODO.md to reflect Phase 1-3 completion status - Add WORKING_ON.md documenting the architectural transformation - Mark container expansion and HTML-first architecture as complete This completes the transition to a unified HTML-first content management system with automatic style detection and element-based behavior, eliminating the complex multi-type system in favor of semantic HTML-driven editing.
42 lines
1.8 KiB
SQL
42 lines
1.8 KiB
SQL
-- name: GetContent :one
|
|
SELECT id, site_id, html_content, original_template, created_at, updated_at, last_edited_by
|
|
FROM content
|
|
WHERE id = sqlc.arg(id) AND site_id = sqlc.arg(site_id);
|
|
|
|
-- name: GetAllContent :many
|
|
SELECT id, site_id, html_content, original_template, created_at, updated_at, last_edited_by
|
|
FROM content
|
|
WHERE site_id = sqlc.arg(site_id)
|
|
ORDER BY updated_at DESC;
|
|
|
|
-- name: GetBulkContent :many
|
|
SELECT id, site_id, html_content, original_template, created_at, updated_at, last_edited_by
|
|
FROM content
|
|
WHERE site_id = sqlc.arg(site_id) AND id IN (sqlc.slice('ids'));
|
|
|
|
-- name: CreateContent :one
|
|
INSERT INTO content (id, site_id, html_content, original_template, last_edited_by)
|
|
VALUES (sqlc.arg(id), sqlc.arg(site_id), sqlc.arg(html_content), sqlc.arg(original_template), sqlc.arg(last_edited_by))
|
|
RETURNING id, site_id, html_content, original_template, created_at, updated_at, last_edited_by;
|
|
|
|
-- name: UpdateContent :one
|
|
UPDATE content
|
|
SET html_content = sqlc.arg(html_content), last_edited_by = sqlc.arg(last_edited_by)
|
|
WHERE id = sqlc.arg(id) AND site_id = sqlc.arg(site_id)
|
|
RETURNING id, site_id, html_content, original_template, created_at, updated_at, last_edited_by;
|
|
|
|
-- name: UpsertContent :one
|
|
INSERT INTO content (id, site_id, html_content, original_template, last_edited_by)
|
|
VALUES (sqlc.arg(id), sqlc.arg(site_id), sqlc.arg(html_content), sqlc.arg(original_template), sqlc.arg(last_edited_by))
|
|
ON CONFLICT(id, site_id) DO UPDATE SET
|
|
html_content = EXCLUDED.html_content,
|
|
last_edited_by = EXCLUDED.last_edited_by
|
|
RETURNING id, site_id, html_content, original_template, created_at, updated_at, last_edited_by;
|
|
|
|
-- name: DeleteContent :exec
|
|
DELETE FROM content
|
|
WHERE id = sqlc.arg(id) AND site_id = sqlc.arg(site_id);
|
|
|
|
-- name: DeleteAllSiteContent :exec
|
|
DELETE FROM content
|
|
WHERE site_id = sqlc.arg(site_id); |