migrations/0006_artifacts.sql
Rama main · réplica de lectura del repositorio original.
-- Durable owner-scoped one-off artifacts.
--
-- The first slice intentionally has no revisions, sharing, or library UI. The
-- metadata row prepares a future owner library while each artifact remains
-- attached to exactly one conversation. Deleting that conversation removes the
-- D1 row; the route also removes the R2 object explicitly because D1 cannot
-- cascade into object storage.
CREATE TABLE IF NOT EXISTS artifacts (
id TEXT PRIMARY KEY,
owner_email TEXT NOT NULL,
session_id TEXT NOT NULL,
kind TEXT NOT NULL,
title TEXT NOT NULL,
storage_key TEXT NOT NULL UNIQUE,
source_hash TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_artifacts_owner_created
ON artifacts(owner_email, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_artifacts_session
ON artifacts(session_id, created_at DESC);