Files
History_Api/db/migrations/000017_battle_replays.up.sql
AzenKain 374c3b4f47
All checks were successful
Build and Release / release (push) Successful in 1m32s
feat: implement battle replay module with database migrations, repository, and CRUD service endpoints
2026-05-17 22:25:48 +07:00

29 lines
1.1 KiB
SQL

CREATE TABLE IF NOT EXISTS battle_replays (
id UUID PRIMARY KEY DEFAULT uuidv7(),
geometry_id UUID NOT NULL REFERENCES geometries(id) ON DELETE CASCADE,
project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
target_geometry_ids JSONB NOT NULL DEFAULT '[]'::jsonb,
detail JSONB NOT NULL DEFAULT '{}'::jsonb,
is_deleted BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX idx_battle_replays_geometry_id ON battle_replays(geometry_id)
WHERE is_deleted = false;
CREATE INDEX idx_battle_replays_project_id ON battle_replays(project_id)
WHERE is_deleted = false;
CREATE INDEX idx_battle_replays_target_geometry_ids ON battle_replays USING GIN (target_geometry_ids)
WHERE is_deleted = false;
CREATE INDEX idx_battle_replays_updated_at ON battle_replays(updated_at DESC)
WHERE is_deleted = false;
DROP TRIGGER IF EXISTS trigger_battle_replays_updated_at ON battle_replays;
CREATE TRIGGER trigger_battle_replays_updated_at
BEFORE UPDATE ON battle_replays
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();