35 lines
1.6 KiB
MySQL
35 lines
1.6 KiB
MySQL
|
|
-- Migration 001: Create prompt artifacts table
|
||
|
|
-- Implements FR-1: InformationSpace Addressability
|
||
|
|
-- Date: 2026-02-08
|
||
|
|
|
||
|
|
-- Prompt artifacts table for content-based addressing
|
||
|
|
CREATE TABLE IF NOT EXISTS prompt_artifacts (
|
||
|
|
id TEXT PRIMARY KEY,
|
||
|
|
space_id TEXT NOT NULL,
|
||
|
|
name TEXT NOT NULL,
|
||
|
|
artifact_type TEXT NOT NULL,
|
||
|
|
content_digest TEXT NOT NULL,
|
||
|
|
content_size INTEGER DEFAULT 0,
|
||
|
|
metadata JSON,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
UNIQUE(space_id, name)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Indexes for performance
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_artifacts_space ON prompt_artifacts(space_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_artifacts_digest ON prompt_artifacts(content_digest);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_artifacts_type ON prompt_artifacts(artifact_type);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_artifacts_name ON prompt_artifacts(space_id, name);
|
||
|
|
|
||
|
|
-- Comments (for documentation)
|
||
|
|
-- prompt_artifacts.id: Unique UUID identifier for the artifact
|
||
|
|
-- prompt_artifacts.space_id: Reference to information space containing this artifact
|
||
|
|
-- prompt_artifacts.name: Human-readable name, unique within space
|
||
|
|
-- prompt_artifacts.artifact_type: Classification: content, template, generated, schema, config
|
||
|
|
-- prompt_artifacts.content_digest: SHA-256 hash of content for change detection
|
||
|
|
-- prompt_artifacts.content_size: Size of content in bytes
|
||
|
|
-- prompt_artifacts.metadata: JSON extensible metadata (description, tags, author, version, custom)
|
||
|
|
-- prompt_artifacts.created_at: Artifact creation timestamp
|
||
|
|
-- prompt_artifacts.updated_at: Last modification timestamp
|