-- test/fixtures/test-schema.sql
--
-- Minimum subset of the production schema required by live.integration.test.ts.
-- Intentionally a simplified subset of the Directus-managed schema — keeps only
-- the columns the Processor's live-broadcast queries actually read.
--
-- Maintenance note: keep in sync with the real schema when join shapes change.
-- The integration test runs the real queries from device-event-map.ts and
-- snapshot.ts unmodified, so the column types here must match production.

-- events — the container for entries.
-- Processor reads events.id (snapshot WHERE e.event_id = $1).
CREATE TABLE IF NOT EXISTS events (
  id   uuid PRIMARY KEY DEFAULT gen_random_uuid()
  -- Real schema also has: organization_id FK, name, slug, discipline, starts_at, ends_at.
);

-- entries — race entries belonging to an event.
-- Processor reads entries.id and entries.event_id.
CREATE TABLE IF NOT EXISTS entries (
  id       uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  event_id uuid NOT NULL REFERENCES events (id) ON DELETE CASCADE
  -- Real schema also has: vehicle_id, class_id, race_number, status, etc.
);

-- devices — durable hardware catalog.
-- Processor reads devices.id and devices.imei (joined to positions.device_id).
-- positions.device_id stores the IMEI text; entry_devices.device_id stores the
-- devices.id uuid. This table is the bridge that lets snapshot.ts and
-- device-event-map.ts translate between the two without `uuid = text` errors.
CREATE TABLE IF NOT EXISTS devices (
  id   uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  imei text NOT NULL UNIQUE
  -- Real schema also has: model, serial_number, notes, date_created, date_updated.
);

-- entry_devices — maps a device (uuid FK) to an entry.
-- Real schema (and this fixture): device_id is uuid FK to devices.id.
-- Live-broadcast joins translate to/from positions.device_id (IMEI text)
-- via the devices table.
CREATE TABLE IF NOT EXISTS entry_devices (
  id         uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  entry_id   uuid NOT NULL REFERENCES entries (id) ON DELETE CASCADE,
  device_id  uuid NOT NULL REFERENCES devices (id) ON DELETE CASCADE
);
