21 lines
942 B
SQL
21 lines
942 B
SQL
DROP INDEX tool_bindings_live_package_bot;
|
|
CREATE UNIQUE INDEX tool_bindings_live_package_bot
|
|
ON tool_bindings(package_row_id, bot_id)
|
|
WHERE status IN ('installing', 'ready', 'switching', 'retiring');
|
|
CREATE TABLE package_transitions (
|
|
id TEXT PRIMARY KEY,
|
|
bot_id TEXT NOT NULL,
|
|
computer_id TEXT NOT NULL REFERENCES computers(id) ON DELETE CASCADE,
|
|
generation INTEGER NOT NULL,
|
|
package_id TEXT NOT NULL,
|
|
binding_id TEXT NOT NULL REFERENCES tool_bindings(id) ON DELETE CASCADE,
|
|
source_id TEXT NOT NULL REFERENCES tool_packages(id) ON DELETE CASCADE,
|
|
target_id TEXT NOT NULL REFERENCES tool_packages(id) ON DELETE CASCADE,
|
|
retiring JSONB NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
schemas JSONB,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
CREATE UNIQUE INDEX package_transition_pending
|
|
ON package_transitions(bot_id, package_id) WHERE status IN ('pending','cancelling');
|