[기능 개선] updateOptions 에서 responseErrorFn 지원

안녕하세요.

셀렉트 어드민의 updateOptions 기능에서 responseErrorFn 동작 예제를 공유합니다.

업데이트 요청이 실패했을 때, 응답을 에러 메시지로 표시하고 싶을때

  • type: http (axios) 호출 실패 케이스 (네트워크 실패 / inline 수정 시 HTTP 업데이트 실패)
  • type: query + display: form 업데이트 실패 케이스 (sqlMessage 확인)

아래 YAML을 참고하여 테스트해보실 수 있습니다. (콘솔 로그로 row, row.error 등 구조도 같이 확인 가능해요)

감사합니다.

menus:
  - name: responseErrorFn
    path: pages/test-responseerrorfn-all

pages:
  - path: pages/test-responseerrorfn-all
    title: responseErrorFn 테스트
    blocks:
      # 1) HTTP(axios): 네트워크/DNS 실패 에러
      - type: http
        name: HTTP 에러 (네트워크 실패)
        autoload: false
        axios:
          method: GET
          url: https://example.invalid
        responseErrorFn: |
          console.log('=== http network error ===')
          console.log(row)
          console.log(row.error)

          return `HTTP 에러: ${row.message}`

      # 2) inline 수정 저장 시 updateOptions를 HTTP(axios)로 호출 (에러)
      - type: query
        name: Query 조회 + updateOptions(HTTP) 에러
        resource: mysql.qa
        sqlType: select
        sql: |
          SELECT 1 AS id, 'editable-value' AS name
        columns:
          id:
            label: ID
          name:
            label: 이름 (inline 수정 → HTTP 호출)
            updateOptions:
              type: http
              axios:
                method: PATCH
                # 500 발생
                url: https://httpbin.org/status/500
                data:
                  name: "{{value}}"
              confirm: false
              responseErrorFn: |
                console.log('=== updateOptions http error ===')
                console.log(row)
                console.log(row.error)
                console.log(row.error.data)
                console.log(row.error.message)
                console.log(row.error.status)
                console.log(row.error.statusText)

                return `updateOptions(HTTP) 에러: ${row.error.message}`

      # 3) Query: display: form + 실패(sqlMessage 확인)
      - type: query
        name: Query 에러 (sqlMessage)
        resource: mysql.qa
        sqlType: select
        sql: |
          SELECT 1 AS id, 'editable-value' AS name
        display: form
        columns:
          id:
            label: ID
          name:
            label: 이름 (inline 수정)
            updateOptions:
              type: query
              resource: mysql.qa
              sqlType: update
              sql: |
                UPDATE __not_exists_table__
                SET name = :name
                WHERE id = :id
              params:
                - key: id
                  valueFromRow: id
                - key: name
                  defaultValueFromRow: name
              responseErrorFn: |
                console.log('=== query sqlMessage error ===')
                console.log(row)
                console.log(row.error)
                console.log(row.error.sqlMessage)

                return `Query 에러(sqlMessage): ${row.error.sqlMessage}`