feat(db): record unique projection outcomes per envelope version

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-15 09:59:54 +00:00
co-authored by Cursor
parent 1b1d0a1cba
commit 21d7692c94
@@ -0,0 +1,17 @@
-- +goose Up
-- E1C: unique projection apply per envelope; no-replace is enforced in SQL + consumer.
CREATE TABLE IF NOT EXISTS event_projection_outcomes (
source_event_id TEXT PRIMARY KEY,
doc_id TEXT NOT NULL,
version_no INT NOT NULL,
snapshot_id BIGINT NOT NULL DEFAULT 0,
applied BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_projection_doc_version
ON event_projection_outcomes (doc_id, version_no);
-- +goose Down
DROP INDEX IF EXISTS uq_projection_doc_version;
DROP TABLE IF EXISTS event_projection_outcomes;