diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..35ab409 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,7 @@ +language: ja-JP +reviews: + profile: chill + auto_review: + enabled: true +chat: + auto_reply: true diff --git a/.gitignore b/.gitignore index 33d78ee..273de36 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ api/lib/interface api/env/* api/seeds/* web/prod/* +api/docs/er-diagrams/* + +# SchemaSpy +api/docs/schemaspy/ \ No newline at end of file diff --git a/Makefile b/Makefile index c7d2fbb..b5d3cd8 100644 --- a/Makefile +++ b/Makefile @@ -85,6 +85,29 @@ 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 + mkdir -p api/docs/er-diagrams/summary + find api/docs/schemaspy/diagrams -name '*.png' ! -name 'relationships.real.*' -exec cp {} api/docs/er-diagrams/ \; + cp api/docs/schemaspy/diagrams/summary/relationships.real.compact.png api/docs/er-diagrams/summary/ + cp api/docs/schemaspy/diagrams/summary/relationships.real.large.png api/docs/er-diagrams/summary/ + rm -rf api/docs/schemaspy + @echo "ER diagrams saved to api/docs/er-diagrams/" + +.PHONY: mac-schemaspy +mac-schemaspy: + mkdir -p api/docs/schemaspy + docker compose run --rm schemaspy + mkdir -p api/docs/er-diagrams/summary + find api/docs/schemaspy/diagrams -name '*.png' ! -name 'relationships.real.*' -exec cp {} api/docs/er-diagrams/ \; + cp api/docs/schemaspy/diagrams/summary/relationships.real.compact.png api/docs/er-diagrams/summary/ + cp api/docs/schemaspy/diagrams/summary/relationships.real.large.png api/docs/er-diagrams/summary/ + rm -rf api/docs/schemaspy + @echo "ER diagrams saved to api/docs/er-diagrams/" + + # 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..80d8b4c 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,20 @@ git submodule update --init ### diを編集してからうまく動かないとき 一度コンテナをdownさせてからupし直してみてください。 +## SchemaSpyでDBスキーマを確認する(PostgreSQL) +- DB初期データは `mysql/db` ディレクトリにありますが、実際のDBはPostgreSQLです。 +- 最終生成物の出力先: `api/docs/er-diagrams/` +- 一時出力先: `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/docker-compose.mac.yml b/docker-compose.mac.yml index 01c8f4d..ffdec50 100644 --- a/docker-compose.mac.yml +++ b/docker-compose.mac.yml @@ -3,7 +3,7 @@ version: "3.8" services: db: container_name: nutfes-seeft-db - image: postgres + image: postgres:18 volumes: - ./mysql/db:/docker-entrypoint-initdb.d/ # 初期データ - ./my.cnf:/etc/mysql/conf.d/my.cnf @@ -12,6 +12,11 @@ services: POSTGRES_USER: seeft POSTGRES_PASSWORD: password TZ: 'Asia/Tokyo' + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 5s + timeout: 5s + retries: 10 ports: - 5432:5432 @@ -43,3 +48,36 @@ services: tty: true depends_on: [api] + schemaspy: + container_name: nutfes-seeft-schemaspy + image: schemaspy/schemaspy:latest + depends_on: + db: + condition: service_healthy + 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..48cbec8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,9 @@ -version: "3.8" + services: db: container_name: nutfes-seeft-db - image: postgres + image: postgres:18 volumes: - ./mysql/db:/docker-entrypoint-initdb.d/ # 初期データ - ./my.cnf:/etc/mysql/conf.d/my.cnf @@ -12,6 +12,11 @@ services: POSTGRES_USER: seeft POSTGRES_PASSWORD: password TZ: 'Asia/Tokyo' + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 5s + timeout: 5s + retries: 10 ports: - 5432:5432 @@ -59,4 +64,39 @@ services: tty: true depends_on: [api] + schemaspy: + container_name: nutfes-seeft-schemaspy + image: schemaspy/schemaspy:latest + depends_on: + db: + condition: service_healthy + 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" +