Files
yaak-mountain-loop/crates/yaak-models/migrations/20250531193722_sync-state-index.sql
2026-01-08 20:44:25 -08:00

44 lines
1.5 KiB
SQL

-- Add sync_dir to the unique index, or else it will fail if the user disables sync
-- and re-enables it for a different directory.
-- Step 1: Rename the existing table
ALTER TABLE sync_states
RENAME TO sync_states_old;
-- Step 2: Create the new table with the updated unique constraint
CREATE TABLE sync_states
(
id TEXT NOT NULL PRIMARY KEY,
model TEXT DEFAULT 'sync_state' NOT NULL,
workspace_id TEXT NOT NULL
REFERENCES workspaces ON DELETE CASCADE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
flushed_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
checksum TEXT NOT NULL,
model_id TEXT NOT NULL,
sync_dir TEXT NOT NULL,
rel_path TEXT NOT NULL
);
CREATE UNIQUE INDEX idx_sync_states_unique
ON sync_states (workspace_id, model_id, sync_dir);
-- Step 3: Copy the data
INSERT INTO sync_states (id, model, workspace_id, created_at, updated_at,
flushed_at, checksum, model_id, sync_dir, rel_path)
SELECT id,
model,
workspace_id,
created_at,
updated_at,
flushed_at,
checksum,
model_id,
sync_dir,
rel_path
FROM sync_states_old;
-- Step 4: Drop the old table
DROP TABLE sync_states_old;