Files
hermes/docs/relational-schema.md
2026-04-09 14:55:37 +02:00

2.5 KiB

Relational Schema

Rules

  • UUID primary keys
  • timestamptz for all timestamps
  • No JSONB columns
  • Child tables for attributes and event payloads
  • Foreign keys wherever possible

Core Tables

users

  • id
  • external_ref
  • created_at
  • preferred_language
  • device_platform

sessions

  • id
  • user_id
  • started_at
  • ended_at
  • experiment_variant
  • app_version
  • device_model
  • os_version
  • locale_code

events

  • id
  • sport_type
  • source_ref
  • title_en
  • title_sv
  • status
  • preview_start_ms
  • preview_end_ms
  • reveal_start_ms
  • reveal_end_ms
  • lock_at
  • settle_at

event_media

  • id
  • event_id
  • media_type
  • hls_master_url
  • poster_url
  • duration_ms
  • preview_start_ms
  • preview_end_ms
  • reveal_start_ms
  • reveal_end_ms

markets

  • id
  • event_id
  • question_key
  • market_type
  • status
  • lock_at
  • settlement_rule_key

outcomes

  • id
  • market_id
  • outcome_code
  • label_key
  • sort_order

odds_versions

  • id
  • market_id
  • version_no
  • created_at
  • is_current

outcome_odds

  • id
  • odds_version_id
  • outcome_id
  • decimal_odds
  • fractional_num
  • fractional_den

bet_intents

  • id
  • user_id
  • session_id
  • event_id
  • market_id
  • outcome_id
  • idempotency_key
  • client_sent_at
  • server_received_at
  • accepted
  • acceptance_code
  • accepted_odds_version_id

settlements

  • id
  • market_id
  • settled_at
  • winning_outcome_id

experiment_assignments

  • id
  • user_id
  • session_id
  • variant
  • assigned_at

localization_keys

  • id
  • key_name
  • description

localization_values

  • id
  • localization_key_id
  • locale_code
  • text_value

analytics_event_types

  • id
  • event_name
  • description

analytics_events

  • id
  • analytics_event_type_id
  • session_id
  • user_id
  • occurred_at

analytics_event_attributes

  • id
  • analytics_event_id
  • attribute_key
  • attribute_value

audit_logs

  • id
  • created_at
  • actor_type
  • actor_id
  • action_name
  • target_type
  • target_id
  • trace_id
  • note

audit_log_attributes

  • id
  • audit_log_id
  • attribute_key
  • attribute_value

Indexes

  • sessions.user_id
  • sessions.started_at
  • events.status
  • markets.event_id
  • markets.lock_at
  • bet_intents.session_id
  • bet_intents.market_id
  • bet_intents.idempotency_key
  • analytics_events.session_id
  • analytics_events.user_id
  • analytics_events.analytics_event_type_id
  • audit_logs.created_at