up
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE game_exports (
|
||||
id TEXT PRIMARY KEY,
|
||||
game_id INTEGER REFERENCES games(id) ON DELETE SET NULL,
|
||||
initiator_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
state TEXT NOT NULL DEFAULT 'preparing' CHECK (state IN ('preparing', 'ready', 'failed')),
|
||||
snapshot JSONB NOT NULL,
|
||||
source_server TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp(),
|
||||
owner_id TEXT,
|
||||
lease_until TIMESTAMPTZ,
|
||||
package_id TEXT NOT NULL DEFAULT '',
|
||||
size BIGINT NOT NULL DEFAULT 0,
|
||||
sha256 TEXT NOT NULL DEFAULT '',
|
||||
object_key TEXT NOT NULL UNIQUE,
|
||||
failure TEXT NOT NULL DEFAULT '',
|
||||
cleaned_at TIMESTAMPTZ,
|
||||
CHECK (state <> 'ready' OR (package_id <> '' AND size > 0 AND sha256 <> ''))
|
||||
);
|
||||
CREATE UNIQUE INDEX game_exports_active ON game_exports(game_id) WHERE state IN ('preparing', 'ready');
|
||||
CREATE INDEX game_exports_game ON game_exports(game_id, created_at DESC);
|
||||
CREATE INDEX game_exports_pending ON game_exports(created_at) WHERE state = 'preparing';
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE game_exports;
|
||||
Reference in New Issue
Block a user