table:
  schema: public
  name: competition_competitor
object_relationships:
  - name: competition
    using:
      foreign_key_constraint_on: competition_id
  - name: patient
    using:
      foreign_key_constraint_on: patient_id
array_relationships:
  - name: history
    using:
      foreign_key_constraint_on:
        column: competitor_id
        table:
          schema: public
          name: competition_history
computed_fields:
  - name: is_subscriber
    definition:
      function:
        schema: public
        name: competition_competitor_is_subscriber
  - name: patient_name
    definition:
      function:
        schema: public
        name: competition_competitor_patient_name
  - name: patient_photo_url
    definition:
      function:
        schema: public
        name: competition_competitor_patient_photo_url
select_permissions:
  - role: patient
    permission:
      columns:
        - id
        - competition_id
        - patient_id
        - score
        - position
        - created_at
        - updated_at
      computed_fields:
        - is_subscriber
        - patient_name
        - patient_photo_url
      filter:
        _or:
          - patient_id:
              _eq: X-Hasura-User-Id
          - competition:
              patient_id:
                _eq: X-Hasura-User-Id
          - competition:
              competitors:
                patient_id:
                  _eq: X-Hasura-User-Id
event_triggers:
  - name: notify_ranking_accepted_invite
    definition:
      enable_manual: true
      insert:
        columns: '*'
    retry_conf:
      num_retries: 3
      interval_sec: 60
      timeout_sec: 60
    webhook: '{{ACTIONS_HANDLER_URL}}/ranking/competition/notify/acceptInvite'
    headers:
      - name: Authorization
        value_from_env: ACTIONS_HANDLER_ACCESS_TOKEN
