Files
core/migrations/0003_ingest/up.sql

40 lines
1.5 KiB
SQL

ALTER TABLE components
ADD COLUMN first_seen_at TIMESTAMP NULL;
CREATE TABLE IF NOT EXISTS log_bundles (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
asset_id BIGINT NOT NULL,
collected_at TIMESTAMP NOT NULL,
content_hash CHAR(64) NOT NULL,
payload JSON NOT NULL,
source VARCHAR(255) NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_log_bundles_asset
FOREIGN KEY (asset_id) REFERENCES assets(id)
ON DELETE RESTRICT ON UPDATE CASCADE,
UNIQUE KEY uniq_log_bundles_content_hash (content_hash)
);
CREATE TABLE IF NOT EXISTS observations (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
log_bundle_id BIGINT NOT NULL,
asset_id BIGINT NOT NULL,
component_id BIGINT NOT NULL,
observed_at TIMESTAMP NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_observations_log_bundle
FOREIGN KEY (log_bundle_id) REFERENCES log_bundles(id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_observations_asset
FOREIGN KEY (asset_id) REFERENCES assets(id)
ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_observations_component
FOREIGN KEY (component_id) REFERENCES components(id)
ON DELETE RESTRICT ON UPDATE CASCADE,
UNIQUE KEY uniq_observations_bundle_component (log_bundle_id, component_id)
);
CREATE INDEX idx_observations_component ON observations(component_id);
CREATE INDEX idx_observations_asset ON observations(asset_id);
CREATE INDEX idx_observations_log_bundle ON observations(log_bundle_id);