# 페이지 설정
# Path 설정
메뉴에 맞는 페이지를 추가합니다.
select-configuration:
# ...
pages:
- path: users/list
- path: users/kakao
# ...
2
3
4
5
6
# Block 기본 구조
각 path
에는 여러개 block
이 들어갑니다.
1개의 블록을 넣거나
select-configuration:
# ...
pages:
# ...
- path: users/list
blocks:
- type: query
resource: mysql.qa
name: 회원목록
sql: >
SELECT *
FROM user
ORDER BY id DESC
LIMIT 100
2
3
4
5
6
7
8
9
10
11
12
13
14
여러개 블록을 넣을 수 있습니다.
select-configuration:
# ...
pages:
# ...
- path: users/list
blocks:
- type: query
resource: mysql.qa
name: 회원목록
autoload: true
sql: >
SELECT *
FROM user
ORDER BY id DESC
LIMIT 100
- type: query
resource: mysql.qa
name: 회원목록 통계
autoload: true
sql: >
SELECT
COUNT(id) AS '전체가입자',
COUNT(provider_kakao_id) AS '카카오 가입자',
(
SELECT COUNT(id) FROM user
WHERE created_at > NOW() - INTERVAL 7 DAY
) AS '최근 7일 가입자'
FROM user
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
여러개 블록인 경우에
name
에 따라 결과물이 표시됩니다.
# Block Table UI
array 결과물을 자동으로 테이블로 표시합니다.
각 컬럼을 클릭하여 정렬 가능합니다. (client-side)
숫자 데이터의 경우 우측정렬을 하고있습니다.
server-side sort, pagination 지원 예정
# Query Block
# resource
설정한 리소스를 입력하면 해당 데이터베이스에 쿼리합니다.
- type: query
resource: mysql.dev
name: 회원목록
sql: SELECT * FROM user LIMIT 100
2
3
4
# sql
입력한 쿼리를 실행하여 결과값을 표시합니다.
여러줄 입력 가능합니다.
- type: query
resource: mysql.dev
name: 회원목록
sql: >
SELECT *
FROM user
LIMIT 100
2
3
4
5
6
7
MultipleStatements, Transaction은 지원 예정
# params
파라메터를 입력받아서 조건에 이용합니다. (자세한 옵션은 아래 내용에 계속됩니다.)
여러개 추가 가능합니다. (key가 겹치지 않게 순서를 유의해주세요.)
- type: query
resource: mysql.qa
sql: >
SELECT * FROM user
WHERE id = :uid
name: 회원개별조회
params:
- key: uid
label: 'ID'
format: 'number'
2
3
4
5
6
7
8
9
10
# autoload
메뉴 진입시 바로 데이터를 불러오지 않고, 조회를 눌러야 불러오게 합니다.
autoload: true
켜져있는경우 '조회' 버튼은 감추어집니다.
- type: query
resource: mysql.dev
# autoload: true
# autoload: false (default)
name: 회원목록
sql: SELECT * FROM user LIMIT 100
2
3
4
5
6
# Query Block에 parameter 넣기
- path: users/dm
blocks:
- type: query
resource: mysql.qa
sql: >
SELECT id,
workspace_id AS '업체ID',
chat_id AS '채팅ID',
label AS '구분코드',
user_id AS '사용자ID',
created_at AS '시작일'
FROM chat_message
ORDER BY id DESC
LIMIT 1000
- type: query
resource: mysql.qa
sql: >
SELECT id,
workspace_id AS '업체ID',
chat_id AS '채팅ID',
label AS '구분코드',
user_id AS '사용자ID',
created_at AS '시작일'
FROM chat_message
WHERE label = :l
ORDER BY id DESC
params:
- key: l
label: 분류코드
# datalist:
# - CUS
# - EMP
# - NOTE
dropdown:
- CUS
- EMP
- NOTE
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# dropdown
# datalist
# 페이지 검색조건을 여러개 쿼리에 이용하기
params
를 페이지에 넣으면 됩니다. (쿼리 블록안에 넣으면 해당 블록에만 적용)
- path: workspaces/state
params:
- key: wid
label: 'ID'
format: 'number'
blocks:
- type: query
resource: mysql.qa
name: general info
showSubmitButton: false
sql: >
select id, name, created_at, public_domain, public_name from workspace
where id = :wid
- type: query
resource: mysql.qa
name: log
showSubmitButton: false
sql: >
select * from workspace_log
where wid = :wid
- type: query
resource: mysql.qa
name: profile
showSubmitButton: false
sql: >
select * from workspace_profile
where workspace_id = :wid
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Query Block - INSERT
폼 입력을 받아 쿼리를 실행합니다.
- type: query
resource: mysql.qa
name: 추가
sql: >
INSERT INTO user
SET email = :email, created_at = NOW()
params:
- key: email
2
3
4
5
6
7
8
# Query Block - UPDATE
폼 입력을 받아 쿼리를 실행합니다.
선택한 항목에 대해 쿼리가 필요한 경우 매번 ID를 직접 입력해야하기 때문에 '모달(팝업)'을 권장합니다.
- type: query
resource: mysql.qa
name: 쿠폰 이용기간 변경
sql: >
UPDATE user
SET created_at = :c
WHERE id = :id
params:
- key: c
label: 만료날짜 (0000-00-00)
- key: id
label: 쿠폰ID
2
3
4
5
6
7
8
9
10
11
12
# Markdown Block
- path: subscriptions
blocks:
- type: markdown
content: >
1. List item one.
List item one continued with a second paragraph followed by an
Indented block.
$ ls *.sh
$ mv *.sh ~/tmp
List item continued with a third paragraph.
2. List item two continued with an open block.
This paragraph is part of the preceding list item.
1. This list is nested and does not require explicit item continuation.
This paragraph is part of the preceding list item.
2. List item b.
This paragraph belongs to item two of the outer list.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# HTTP API Block
- type: http
axios:
method: GET
url: https://gist.githubusercontent.com/eces/c267436ddeec8917b47ee666b0d5e955/raw/892877e7035c4f61e946848a3f6da7e9983cab15/test.json
rowsPath: rows
2
3
4
5
# rowsPath
테이블에 표시할 array를 지정합니다.
{
"message": "ok",
"rows": [{
"id": 1000,
"name": "John"
}, {
"id": 1001,
"name": "Kelly"
}]
}
2
3
4
5
6
7
8
9
10
# POST parameter
querystring과 body json value에 파라메터가 입력됩니다.
- type: http
axios:
method: POST
url: https://httpbin.org/anything?cid={{id}}
data:
'고객아이디': customer-{{id}}
params:
- key: id
label: '고객ID (수신거부 대상자 처리)'
format: 'number'
2
3
4
5
6
7
8
9
10
중첩된 키에 대해서도 파라메터가 입력됩니다.
- type: http
name: POST yml request + yml params <String> replacement
axios:
method: POST
url: https://httpbin.org/anything
data:
id: "{{id}}"
rows:
- id: id-{{id}}
- paramsInKey{{id}}: value
headers:
X-Custom-Header: Token {{id}}
params:
added_cid: added-{{id}}
params:
- key: id
label: '고객ID (수신거부 대상자 처리)'
format: 'number'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# JSON parameter
YAML 포맷이 아닌 JSON을 입력해도 파라메터가 입력됩니다.
- type: http
name: POST yml request + json params <String> replacement
axios:
method: POST
url: https://httpbin.org/anything
data: >
{
"id": "{{id}}"
}
headers: >
{
"X-Custom-Header": "Token {{id}}"
}
params: >
{
"added_cid": "added-{{id}}"
}
params:
- key: id
label: '고객ID (수신거부 대상자 처리)'
format: 'number'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# JSON 에러표시
구문에러 Syntax Error는 아래와 같이 표시됩니다.
입력값이 숫자가 아닌 경우 아래와 같이 표시됩니다. param.format = number