-- +goose Up -- external_components caches scraped catalog listings from supplier sites -- (Regard, and later pg.pro/technosuccess.ru/DNS-shop) so the PC configurator -- can offer just-in-time-sourced parts alongside the shop's own parts stock, -- without hitting the supplier site on every picker render. Refreshed -- periodically by internal/scraper, not written by any other code path. CREATE TABLE external_components ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), source TEXT NOT NULL, external_id TEXT NOT NULL, pc_component_type TEXT NOT NULL CHECK (pc_component_type IN ('cpu', 'motherboard', 'ram', 'gpu', 'psu', 'case', 'cooler', 'storage')), name TEXT NOT NULL, price NUMERIC(12,2) NOT NULL, product_url TEXT NOT NULL, in_stock BOOLEAN NOT NULL DEFAULT true, spec JSONB NOT NULL DEFAULT '{}'::jsonb, scraped_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (source, external_id) ); CREATE INDEX idx_external_components_type ON external_components (pc_component_type); -- +goose Down DROP TABLE external_components;