7fe5f8a563
Build backend images / build content-svc (push) Failing after 1m36s
Build backend images / build file-svc (push) Failing after 1m28s
Build backend images / build gateway (push) Failing after 2m11s
Build backend images / build identity-svc (push) Failing after 2m11s
Build backend images / build notification-svc (push) Failing after 3m46s
Build backend images / build render-svc (push) Failing after 55s
Build backend images / build studio-svc (push) Failing after 1m2s
- content-svc: GET /v1/projects (browse/search all projects across containers,
paginated, admin) returning template name/slug + AE status; project_assets
table (mig 23) + entity; GET/POST/DELETE /v1/projects/{id}/assets
- /admin/projects: searchable, paginated list of every renderable project with
thumbnail, template, aspect/resolution, AE-file + publish status
- ProjectAssets component: list/upload/delete named footage/image/audio/font
files per project (reused in the projects page; AE file upload alongside)
- nav + fa/en "Projects" label
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
21 lines
902 B
SQL
21 lines
902 B
SQL
-- =====================================================================
|
|
-- CONTENT SCHEMA — Part 23: per-project assets (footage / images / audio / fonts)
|
|
-- Named asset files attached to a renderable project, alongside its .aep.
|
|
-- =====================================================================
|
|
|
|
SET search_path TO content, public;
|
|
|
|
CREATE TABLE IF NOT EXISTS project_assets (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
project_id UUID NOT NULL,
|
|
name TEXT NOT NULL,
|
|
kind TEXT NOT NULL DEFAULT 'footage', -- footage | image | audio | font | other
|
|
url TEXT NOT NULL,
|
|
minio_key TEXT,
|
|
size_bytes BIGINT,
|
|
sort INT NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_project_assets_project ON project_assets (project_id, sort);
|