Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions migrations/000137_repository_stats_triggers.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,33 @@ BEGIN
END;
$$ LANGUAGE plpgsql;

-- Separate triggers for INSERT/UPDATE vs DELETE because
-- DELETE triggers cannot reference NEW in WHEN condition.
DROP TRIGGER IF EXISTS trg_update_branch_finding_counts ON findings;
CREATE TRIGGER trg_update_branch_finding_counts
AFTER INSERT OR UPDATE OF status, severity, branch_id OR DELETE
DROP TRIGGER IF EXISTS trg_update_branch_finding_counts_delete ON findings;

-- INSERT: only NEW available
CREATE TRIGGER trg_update_branch_finding_counts_insert
AFTER INSERT
ON findings
FOR EACH ROW
WHEN (NEW.branch_id IS NOT NULL)
EXECUTE FUNCTION update_branch_finding_counts();

-- UPDATE: both NEW and OLD available
CREATE TRIGGER trg_update_branch_finding_counts_update
AFTER UPDATE OF status, severity, branch_id
ON findings
FOR EACH ROW
WHEN (NEW.branch_id IS NOT NULL OR OLD.branch_id IS NOT NULL)
EXECUTE FUNCTION update_branch_finding_counts();

-- DELETE: only OLD available
CREATE TRIGGER trg_update_branch_finding_counts_delete
AFTER DELETE
ON findings
FOR EACH ROW
WHEN (COALESCE(NEW.branch_id, OLD.branch_id) IS NOT NULL)
WHEN (OLD.branch_id IS NOT NULL)
EXECUTE FUNCTION update_branch_finding_counts();

-- =============================================================================
Expand Down
12 changes: 6 additions & 6 deletions migrations/000138_asset_identity_resolution.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ CREATE TABLE IF NOT EXISTS asset_merge_log (
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX idx_asset_merge_log_tenant ON asset_merge_log(tenant_id);
CREATE INDEX idx_asset_merge_log_kept ON asset_merge_log(kept_asset_id);
CREATE INDEX idx_asset_merge_log_merged ON asset_merge_log(merged_asset_id)
CREATE INDEX IF NOT EXISTS idx_asset_merge_log_tenant ON asset_merge_log(tenant_id);
CREATE INDEX IF NOT EXISTS idx_asset_merge_log_kept ON asset_merge_log(kept_asset_id);
CREATE INDEX IF NOT EXISTS idx_asset_merge_log_merged ON asset_merge_log(merged_asset_id)
WHERE merged_asset_id IS NOT NULL;
CREATE INDEX idx_asset_merge_log_created ON asset_merge_log(tenant_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_asset_merge_log_created ON asset_merge_log(tenant_id, created_at DESC);

-- ============================================================
-- 2. Asset Dedup Review — admin queue for duplicate groups
Expand Down Expand Up @@ -69,8 +69,8 @@ CREATE TABLE IF NOT EXISTS asset_dedup_review (
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX idx_asset_dedup_review_tenant ON asset_dedup_review(tenant_id);
CREATE INDEX idx_asset_dedup_review_status ON asset_dedup_review(tenant_id, status);
CREATE INDEX IF NOT EXISTS idx_asset_dedup_review_tenant ON asset_dedup_review(tenant_id);
CREATE INDEX IF NOT EXISTS idx_asset_dedup_review_status ON asset_dedup_review(tenant_id, status);

-- ============================================================
-- 3. Index for alias search (properties->'aliases')
Expand Down
Loading