table:
  schema: public
  name: message
object_relationships:
  - name: patient
    using:
      foreign_key_constraint_on: patient_id
  - name: replied_by
    using:
      foreign_key_constraint_on: replied_by_user_id
  - name: user
    using:
      foreign_key_constraint_on: user_id
insert_permissions:
  - role: marketplace
    permission:
      check:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      set:
        replied_by_user_id: x-hasura-User-Id
      columns:
        - file_url
        - patient_id
        - text
        - user_id
      backend_only: false
  - role: nutritionist_manager
    permission:
      check: {}
      set:
        replied_by_user_id: x-hasura-User-Id
      columns:
        - file_url
        - patient_id
        - text
        - user_id
      backend_only: false
  - role: patient
    permission:
      check: {}
      set:
        patient_id: x-hasura-User-Id
      columns:
        - file_url
        - text
        - user_id
      backend_only: false
  - role: personal_trainer
    permission:
      check:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      columns:
        - file_url
        - patient_id
        - replied_by_user_id
        - text
        - user_id
        - sent_at
        - view_at
        - id
  - role: user
    permission:
      check: {}
      set:
        replied_by_user_id: x-hasura-User-Id
      columns:
        - file_url
        - patient_id
        - text
        - user_id
      backend_only: false
select_permissions:
  - role: marketplace
    permission:
      columns:
        - file_url
        - patient_id
        - replied_by_user_id
        - text
        - user_id
        - sent_at
        - view_at
        - id
      filter:
        _or:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      allow_aggregations: true
  - role: nutritionist_manager
    permission:
      columns:
        - file_url
        - id
        - patient_id
        - replied_by_user_id
        - sent_at
        - text
        - user_id
        - view_at
      filter: {}
      allow_aggregations: true
  - role: patient
    permission:
      columns:
        - file_url
        - id
        - patient_id
        - replied_by_user_id
        - sent_at
        - text
        - user_id
        - view_at
      filter:
        patient_id:
          _eq: X-Hasura-User-Id
      allow_aggregations: true
  - role: personal_trainer
    permission:
      columns:
        - file_url
        - patient_id
        - replied_by_user_id
        - text
        - user_id
        - sent_at
        - view_at
        - id
      filter:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      allow_aggregations: true
  - role: user
    permission:
      columns:
        - file_url
        - id
        - patient_id
        - replied_by_user_id
        - sent_at
        - text
        - user_id
        - view_at
      filter: {}
      allow_aggregations: true
update_permissions:
  - role: marketplace
    permission:
      columns:
        - file_url
        - patient_id
        - text
        - user_id
      filter:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      check: {}
      set:
        replied_by_user_id: x-hasura-User-Id
  - role: nutritionist_manager
    permission:
      columns:
        - file_url
        - text
      filter:
        replied_by_user_id:
          _eq: X-Hasura-User-Id
      check: null
      set:
        sent_at: now()
  - role: patient
    permission:
      columns:
        - view_at
      filter:
        patient_id:
          _eq: X-Hasura-User-Id
      check: {}
  - role: personal_trainer
    permission:
      columns:
        - file_url
        - patient_id
        - replied_by_user_id
        - text
        - user_id
        - sent_at
        - view_at
        - id
      filter:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
      check: null
  - role: user
    permission:
      columns:
        - file_url
        - text
      filter:
        replied_by_user_id:
          _eq: X-Hasura-User-Id
      check: null
      set:
        sent_at: now()
delete_permissions:
  - role: marketplace
    permission:
      filter:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
  - role: nutritionist_manager
    permission:
      filter:
        replied_by_user_id:
          _eq: X-Hasura-User-Id
  - role: personal_trainer
    permission:
      filter:
        _and:
          - user_id:
              _eq: X-Hasura-User-Id
          - patient:
              user_id:
                _eq: X-Hasura-User-Id
  - role: user
    permission:
      filter:
        replied_by_user_id:
          _eq: X-Hasura-User-Id
event_triggers:
  - name: notify_nutri_new_message
    definition:
      enable_manual: true
      insert:
        columns: '*'
    retry_conf:
      num_retries: 3
      interval_sec: 60
      timeout_sec: 60
    webhook: '{{ACTIONS_HANDLER_URL}}/notification/nutritionist/new-message'
    headers:
      - name: Authorization
        value_from_env: ACTIONS_HANDLER_ACCESS_TOKEN
  - name: notify_replied_message
    definition:
      enable_manual: false
      insert:
        columns: '*'
    retry_conf:
      num_retries: 3
      interval_sec: 60
      timeout_sec: 60
    webhook_from_env: ACTIONS_HANDLER_NOTIFY_REPLIED_MESSAGE
    headers:
      - name: Authorization
        value_from_env: ACTIONS_HANDLER_ACCESS_TOKEN
