동적 테이블

별도 DB 없이 앱 전용 테이블을 만들고, 행을 CRUD하고, 데이터 API로 읽고 쓰는 방법이에요.


동적 테이블은 앱 전용 데이터 저장소예요. 외부 DB를 따로 붙이지 않아도 표(테이블)를 만들고 행을 추가·조회·수정·삭제할 수 있어요. AxHub가 앱마다 격리된 PostgreSQL 스키마로 관리해 줘요.

테이블 만들기

CLI로 컬럼을 지정해 만들어요. 명령은 기본이 미리보기(dry-run)라, 실제로 만들 땐 --execute를 붙여요.

axhub tables create orders --app demo \
  --column 'title:text' \
  --column 'qty:int' \
  --column 'done:bool' \
  --execute

컬럼은 이름:타입[:nullable][:default] 형식이에요. 쓸 수 있는 타입은 8가지예요.

타입설명
text문자열
int · bigint정수
float실수
bool참/거짓
timestamptz시각(타임존 포함)
uuidUUID
jsonbJSON

컬럼이 많으면 --schema table.yaml로 스키마 파일을 넘길 수도 있어요. 행의 소유자를 구분하려면 --owner-column <컬럼>을 지정하면 돼요.

데이터 다루기

행 추가·조회·수정·삭제도 CLI로 해요. 추가·수정·삭제는 --execute가 필요해요.

axhub data insert orders --app demo --body '{"title":"첫 주문","qty":2}' --execute
axhub data list orders --app demo
axhub data get orders <row-id> --app demo
axhub data count orders --app demo
axhub data update orders <row-id> --app demo --body '{"done":true}' --execute
axhub data delete orders <row-id> --app demo --execute

여러 행을 한 번에 넣을 땐 --batch rows.jsonl(한 줄에 JSON 하나)을 써요.

데이터 API

테이블 데이터를 코드에서 다루는 방법은 두 가지예요.

① 앱 안에서 — SDK (권장) · 로그인한 사용자 자격으로 가장 간단해요. 자세히는 SDK로 백엔드 호출하기.

const app = await makeApp(); // 템플릿 제공 헬퍼
const todos = await app.data.discover<{ id: string; title: string; done: boolean }>('todos');
await todos.list({ limit: 20 });
await todos.insert({ title: '할 일', done: false });

② 외부에서 — HTTP API + PAT · 에이전트·CI·서버-투-서버처럼 앱 밖에서 호출할 땐 HTTP로 직접 써요. 경로는 /data/{tenant}/{app}/{table}.

메서드 · 경로하는 일
GET /data/{tenant}/{app}/{table}목록
GET …/{table}/_count개수
GET …/{table}/{id}단건 조회
POST …/{table}추가
PATCH …/{table}/{id}수정
DELETE …/{table}/{id}삭제
const base = `https://api.axhub.ai/data/${tenant}/${app}/orders`;
const headers = { 'X-Api-Key': process.env.AXHUB_API_KEY, 'Content-Type': 'application/json' };

const rows = await fetch(base, { headers }).then((r) => r.json()); // 목록
await fetch(base, { method: 'POST', headers, body: JSON.stringify({ title: '첫 주문', qty: 2 }) }); // 추가

PAT(개인 액세스 토큰)는 코드에 박지 말고 환경변수runtime secret으로 두고 서버에서 읽으세요. 테이블을 만들고 관리하는 일(DDL)은 PAT가 아니라 로그인(OAuth)으로 해요.

다른 앱에 공유하기

기본적으로 테이블은 만든 앱만 접근해요. 다른 앱이나 주체에게 읽기/쓰기를 열어주려면 table grant를 줘요.

axhub tables grants list --app demo

자세한 엔드포인트·쿼리·권한·인증은 데이터 API를 보세요.