adms: Postgres / MySQL に向けるだけで REST API と管理 UI が立つ単一バイナリ
PostgREST 風の HTTP API を DB のスキーマから自動生成し、設定 1 行で管理画面まで同じバイナリから配信する Go 製ツール。MySQL にも使える。
どんなときに使う?
- 社内向けの管理画面を毎回「一覧・フィルタ・CRUD」から書いている
- PostgREST を使いたいが MySQL だった、または UI も一緒に欲しい
- Node やフロントの別デプロイなしで、閉じたネットワークに置きたい(UI は CDN 不要で埋め込み済み)
やり方
bash
brew install mickamy/tap/adms # または go install github.com/mickamy/adms@latestyaml
# adms.yaml(カレントの adms.yaml / adms.yml / adms.toml を自動検出)
driver: postgres # MySQL なら mysql
dsn: "${ADMS_DSN}" # ${VAR} で環境変数展開。DSN をファイルに書かない
ui:
enabled: true # 管理 UI を :7778 で配信(ui.listen で変更)
read_only: true # 書き込み UI を隠す(置く階層は README で確認)bash
ADMS_DSN="postgres://postgres@localhost:5432/myapp?sslmode=disable" adms
curl 'http://localhost:7777/users?status=eq.active&age=gte.18&deleted_at=is.null'
curl 'http://localhost:7777/users?id=eq.1&select=id,name,posts(id,title)' # FK をたどって埋め込み- API は
:7777。各テーブルが/<table>になる。演算子はeq/neq/gt/gte/lt/lte/like/ilike/in/is、否定はnot. PATCH/DELETEはフィルタ必須(全件更新・全削除を弾く)- UI はテーブル一覧、フィルタ、インライン編集、CSV / JSON エクスポート、ER 図(
/schema)
注意点
- 作者が出したばかりの v0.0.1。本番 DB には読み取り専用ユーザーと
read_only: trueから - API に認証の話は記事に出てこない。社内網・VPN・社内自作アプリ基盤: IAP 入口 + ゲートプロキシ認可 + テナント別 DBで守る前提で置く
- 細かい設定項目はリポジトリで確認する