0004_results.sql 921 B

1234567891011121314151617181920212223242526
  1. BEGIN;
  2. CREATE TABLE session_results (
  3. id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  4. session_id UUID NOT NULL UNIQUE REFERENCES game_sessions(id) ON DELETE CASCADE,
  5. result_status TEXT NOT NULL CHECK (result_status IN ('finished', 'failed', 'cancelled')),
  6. summary_jsonb JSONB NOT NULL DEFAULT '{}'::jsonb,
  7. final_duration_sec INTEGER,
  8. final_score INTEGER,
  9. completed_controls INTEGER,
  10. total_controls INTEGER,
  11. distance_meters NUMERIC(10,2),
  12. average_speed_kmh NUMERIC(8,3),
  13. max_heart_rate_bpm INTEGER,
  14. created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  15. updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
  16. );
  17. CREATE INDEX session_results_result_status_idx ON session_results(result_status);
  18. CREATE INDEX session_results_created_at_idx ON session_results(created_at DESC);
  19. CREATE TRIGGER session_results_set_updated_at
  20. BEFORE UPDATE ON session_results
  21. FOR EACH ROW EXECUTE FUNCTION set_updated_at();
  22. COMMIT;