CREATE TABLE IF NOT EXISTS call_recordings (
  id SERIAL PRIMARY KEY,
  recording_id TEXT NOT NULL UNIQUE,
  channel TEXT NOT NULL,
  call_id TEXT NOT NULL,
  interaction_id TEXT NULL,
  source_event_id TEXT NULL,
  file_name TEXT NOT NULL,
  storage_backend TEXT NOT NULL,
  storage_path TEXT NOT NULL,
  mime_type TEXT NOT NULL,
  size_bytes INTEGER NOT NULL,
  duration_seconds INTEGER NULL,
  checksum_sha256 TEXT NOT NULL,
  status TEXT NOT NULL,
  recorded_at TEXT NOT NULL,
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL,
  archived_at TEXT NULL
);

CREATE INDEX IF NOT EXISTS ix_call_recordings_recording_id ON call_recordings (recording_id);
CREATE INDEX IF NOT EXISTS ix_call_recordings_channel ON call_recordings (channel);
CREATE INDEX IF NOT EXISTS ix_call_recordings_call_id ON call_recordings (call_id);
CREATE INDEX IF NOT EXISTS ix_call_recordings_interaction_id ON call_recordings (interaction_id);
CREATE INDEX IF NOT EXISTS ix_call_recordings_source_event_id ON call_recordings (source_event_id);
CREATE INDEX IF NOT EXISTS ix_call_recordings_storage_backend ON call_recordings (storage_backend);
CREATE INDEX IF NOT EXISTS ix_call_recordings_checksum_sha256 ON call_recordings (checksum_sha256);
CREATE INDEX IF NOT EXISTS ix_call_recordings_status ON call_recordings (status);
CREATE INDEX IF NOT EXISTS ix_call_recordings_recorded_at ON call_recordings (recorded_at);
CREATE INDEX IF NOT EXISTS ix_call_recordings_created_at ON call_recordings (created_at);
CREATE INDEX IF NOT EXISTS ix_call_recordings_updated_at ON call_recordings (updated_at);
CREATE INDEX IF NOT EXISTS ix_call_recordings_archived_at ON call_recordings (archived_at);
