-- Marketplace listings table (global, NOT tenant-scoped) -- GLOBAL TABLE: marketplace_listings CREATE TABLE IF NOT EXISTS marketplace_listings ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(80) NOT NULL UNIQUE, display_name VARCHAR(120) NOT NULL, description TEXT NOT NULL DEFAULT '', version VARCHAR(40) NOT NULL, author VARCHAR(200) NOT NULL DEFAULT '', homepage VARCHAR(500) NOT NULL DEFAULT '', download_url VARCHAR(1024) NOT NULL, signature_public_key TEXT NOT NULL DEFAULT '', icon VARCHAR(500) NOT NULL DEFAULT '', screenshots JSONB NOT NULL DEFAULT '[]'::jsonb, tags JSONB NOT NULL DEFAULT '[]'::jsonb, price DOUBLE PRECISION NOT NULL DEFAULT 0.0, is_verified BOOLEAN NOT NULL DEFAULT FALSE, download_count INTEGER NOT NULL DEFAULT 0, min_app_version VARCHAR(40) NOT NULL DEFAULT '0.0.0', license VARCHAR(50) NOT NULL DEFAULT 'MIT', created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- Indexes CREATE INDEX IF NOT EXISTS ix_marketplace_listings_name ON marketplace_listings (name); CREATE INDEX IF NOT EXISTS ix_marketplace_listings_tags ON marketplace_listings USING GIN (tags); CREATE INDEX IF NOT EXISTS ix_marketplace_listings_is_verified ON marketplace_listings (is_verified); CREATE INDEX IF NOT EXISTS ix_marketplace_listings_download_count ON marketplace_listings (download_count);