network/migrations/008_ipfs_namespace_tracking.sql
2026-01-22 17:49:10 +02:00

32 lines
1.1 KiB
SQL

-- Migration 008: IPFS Namespace Tracking
-- This migration adds namespace isolation for IPFS content by tracking CID ownership.
-- Table: ipfs_content_ownership
-- Tracks which namespace owns each CID uploaded to IPFS.
-- This enables namespace isolation so that:
-- - Namespace-A cannot GET/PIN/UNPIN Namespace-B's content
-- - Same CID can be uploaded by different namespaces (shared content)
CREATE TABLE IF NOT EXISTS ipfs_content_ownership (
id TEXT PRIMARY KEY,
cid TEXT NOT NULL,
namespace TEXT NOT NULL,
name TEXT,
size_bytes BIGINT DEFAULT 0,
is_pinned BOOLEAN DEFAULT FALSE,
uploaded_at TIMESTAMP NOT NULL,
uploaded_by TEXT NOT NULL,
UNIQUE(cid, namespace)
);
-- Index for fast namespace + CID lookup
CREATE INDEX IF NOT EXISTS idx_ipfs_ownership_namespace_cid
ON ipfs_content_ownership(namespace, cid);
-- Index for fast CID lookup across all namespaces
CREATE INDEX IF NOT EXISTS idx_ipfs_ownership_cid
ON ipfs_content_ownership(cid);
-- Index for namespace-only queries (list all content for a namespace)
CREATE INDEX IF NOT EXISTS idx_ipfs_ownership_namespace
ON ipfs_content_ownership(namespace);