first
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user