Implement snapshot creation and restoration for compaction (bd-256)
- Add compaction_snapshots table to schema with proper indexes - Implement CreateSnapshot, RestoreFromSnapshot, GetSnapshots functions - Use UTC timestamps throughout - RestoreFromSnapshot uses transactions with optimistic concurrency control - Add validation for levels and issue_id matching - Prevent race conditions with compaction_level guard - Create bd-268 to explore lightweight SQL alternatives Amp-Thread-ID: https://ampcode.com/threads/T-3bdd0d6b-9212-4e4e-b22d-f658949df7a9 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -128,6 +128,18 @@ CREATE TABLE IF NOT EXISTS issue_snapshots (
|
||||
CREATE INDEX IF NOT EXISTS idx_snapshots_issue ON issue_snapshots(issue_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_snapshots_level ON issue_snapshots(compaction_level);
|
||||
|
||||
-- Compaction snapshots table (for restoration)
|
||||
CREATE TABLE IF NOT EXISTS compaction_snapshots (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
issue_id TEXT NOT NULL,
|
||||
compaction_level INTEGER NOT NULL,
|
||||
snapshot_json BLOB NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_comp_snap_issue_level_created ON compaction_snapshots(issue_id, compaction_level, created_at DESC);
|
||||
|
||||
-- Ready work view (with hierarchical blocking)
|
||||
-- Uses recursive CTE to propagate blocking through parent-child hierarchy
|
||||
CREATE VIEW IF NOT EXISTS ready_issues AS
|
||||
|
||||
Reference in New Issue
Block a user