diff --git a/.gitignore b/.gitignore index 33d78ee..93816da 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,10 @@ api/lib/interface api/env/* api/seeds/* web/prod/* +api/docs/schemaspy/* +!api/docs/schemaspy/.gitkeep +!api/docs/schemaspy/schemaspy.properties +!api/docs/schemaspy/README.md + +# SchemaSpy +schemaspy/ \ No newline at end of file diff --git a/Makefile b/Makefile index c7d2fbb..0f52a0a 100644 --- a/Makefile +++ b/Makefile @@ -85,6 +85,16 @@ mac-seed: sleep 15 docker compose -f docker-compose.mac.yml run --rm api go run /app/seeds/seeds.go +.PHONY: schemaspy +schemaspy: + mkdir -p api/docs/schemaspy + docker compose run --rm schemaspy $(ARGS) + +.PHONY: mac-schemaspy +mac-schemaspy: + mkdir -p api/docs/schemaspy + docker compose -f docker-compose.mac.yml run --rm schemaspy $(ARGS) + # mobile/lib/assetsに512*512のアイコンを用意しておくこと(コマンドのファイル名も変更する) # リサイズ用にImageMagickをインストールする(`sudo apt-get install imagemagick` or `brew install imagemagick`) .PHONY: mobile-icons-init diff --git a/README.md b/README.md index ea0f535..66d47b3 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,19 @@ git submodule update --init ### diを編集してからうまく動かないとき 一度コンテナをdownさせてからupし直してみてください。 +## SchemaSpyでDBスキーマを確認する(PostgreSQL) +- DB初期データは `mysql/db` ディレクトリにありますが、実際のDBはPostgreSQLです。 +- 生成物の出力先: `api/docs/schemaspy` + +```fish +# 標準(docker-compose.yml) +make schemaspy + +# Mac用composeを使う場合 +make mac-schemaspy +``` +接続先・認証情報は compose の環境変数(`SCHEMASPY_HOST`, `SCHEMASPY_DB` など)で上書きできます。 + ## Author NUTMEG(技大祭実行委員会情報局) mail: nutfes.info [at] gmail diff --git a/api/docs/schemaspy/.gitkeep b/api/docs/schemaspy/.gitkeep new file mode 100644 index 0000000..139597f --- /dev/null +++ b/api/docs/schemaspy/.gitkeep @@ -0,0 +1,2 @@ + + diff --git a/api/docs/schemaspy/README.md b/api/docs/schemaspy/README.md new file mode 100644 index 0000000..93bacec --- /dev/null +++ b/api/docs/schemaspy/README.md @@ -0,0 +1,6 @@ +# SchemaSpy 出力先 + +- 生成物のHTMLはこのディレクトリに出力されます。 +- 設定テンプレート: `schemaspy.properties`(接続先はPostgreSQLを想定)。 +- `docker compose run --rm schemaspy` または `make schemaspy` で再生成できます。 + diff --git a/api/docs/schemaspy/schemaspy.properties b/api/docs/schemaspy/schemaspy.properties new file mode 100644 index 0000000..359a834 --- /dev/null +++ b/api/docs/schemaspy/schemaspy.properties @@ -0,0 +1,17 @@ +# SchemaSpy configuration for SeeFT PostgreSQL +# メモ: リポジトリ内の mysql ディレクトリは初期データ置き場だが、実際のDBはPostgreSQL。 +schemaspy.t=pgsql +schemaspy.host=${SCHEMASPY_HOST:-db} +schemaspy.port=${SCHEMASPY_PORT:-5432} +schemaspy.db=${SCHEMASPY_DB:-seeft_db} +schemaspy.u=${SCHEMASPY_USER:-seeft} +schemaspy.p=${SCHEMASPY_PASSWORD:-password} +schemaspy.s=${SCHEMASPY_SCHEMA:-public} + +# 出力先は docker-compose のボリューム指定で /output にマウントされる +schemaspy.o=/output + +# 追加で必要な場合のサンプル +# schemaspy.meta=/output/meta.xml +# schemaspy.cat=public + diff --git a/docker-compose.mac.yml b/docker-compose.mac.yml index 01c8f4d..913391c 100644 --- a/docker-compose.mac.yml +++ b/docker-compose.mac.yml @@ -43,3 +43,36 @@ services: tty: true depends_on: [api] + schemaspy: + container_name: nutfes-seeft-schemaspy + image: schemaspy/schemaspy:latest + depends_on: + db: + condition: service_started + environment: + SCHEMASPY_HOST: ${SCHEMASPY_HOST:-db} + SCHEMASPY_PORT: ${SCHEMASPY_PORT:-5432} + SCHEMASPY_DB: ${SCHEMASPY_DB:-seeft_db} + SCHEMASPY_USER: ${SCHEMASPY_USER:-seeft} + SCHEMASPY_PASSWORD: ${SCHEMASPY_PASSWORD:-password} + SCHEMASPY_SCHEMA: ${SCHEMASPY_SCHEMA:-public} + volumes: + - ./api/docs/schemaspy:/output + command: + - "-t" + - "pgsql" + - "-host" + - "${SCHEMASPY_HOST:-db}" + - "-port" + - "${SCHEMASPY_PORT:-5432}" + - "-db" + - "${SCHEMASPY_DB:-seeft_db}" + - "-u" + - "${SCHEMASPY_USER:-seeft}" + - "-p" + - "${SCHEMASPY_PASSWORD:-password}" + - "-s" + - "${SCHEMASPY_SCHEMA:-public}" + - "-o" + - "/output" + diff --git a/docker-compose.yml b/docker-compose.yml index eb60dd3..b28aa43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.8" + services: db: @@ -59,4 +59,39 @@ services: tty: true depends_on: [api] + schemaspy: + container_name: nutfes-seeft-schemaspy + image: schemaspy/schemaspy:latest + depends_on: + db: + condition: service_started + environment: + SCHEMASPY_HOST: ${SCHEMASPY_HOST:-db} + SCHEMASPY_PORT: ${SCHEMASPY_PORT:-5432} + SCHEMASPY_DB: ${SCHEMASPY_DB:-seeft_db} + SCHEMASPY_USER: ${SCHEMASPY_USER:-seeft} + SCHEMASPY_PASSWORD: ${SCHEMASPY_PASSWORD:-password} + SCHEMASPY_SCHEMA: ${SCHEMASPY_SCHEMA:-public} + volumes: + - ./api/docs/schemaspy:/output + profiles: + - tools + command: + - "-t" + - "pgsql" + - "-host" + - "${SCHEMASPY_HOST:-db}" + - "-port" + - "${SCHEMASPY_PORT:-5432}" + - "-db" + - "${SCHEMASPY_DB:-seeft_db}" + - "-u" + - "${SCHEMASPY_USER:-seeft}" + - "-p" + - "${SCHEMASPY_PASSWORD:-password}" + - "-s" + - "${SCHEMASPY_SCHEMA:-public}" + # - "-o" + # - "/output" +