From 8140b1f6cdde481ca9a33eb51d0e0578f3900946 Mon Sep 17 00:00:00 2001 From: dsyoon Date: Tue, 26 May 2026 15:24:42 +0900 Subject: [PATCH] =?UTF-8?q?refactor(env):=20user=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EB=AA=85=EC=9D=84=20PG=5FTABLE=EB=A1=9C=20=ED=86=B5?= =?UTF-8?q?=EC=9D=BC(TABLE=20=EB=A0=88=EA=B1=B0=EC=8B=9C=20=ED=98=B8?= =?UTF-8?q?=ED=99=98=20=EC=9C=A0=EC=A7=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- README.md | 2 +- flask_app.py | 10 +++++++++- server.js | 9 ++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 796bdcc..e958ef6 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ python3 -m http.server 8000 psql -h "$PG_DB_HOST" -p "$PG_DB_PORT" -U "$PG_DB_USER" -d "$PG_DB_NAME" -f db/schema.sql ``` -`.env`의 PostgreSQL 변수는 **`PG_DB_HOST`**, **`PG_DB_PORT`**, **`PG_DB_NAME`**, **`PG_DB_USER`**, **`PG_DB_PASSWORD`** 입니다. (선택: `PG_DB_SSLMODE`, `PG_DB_CONNECT_TIMEOUT`). 배포 마이그레이션 동안 레거시 `DB_*` 이름도 같은 값으로 한동안 읽힐 수 있습니다. +`.env`의 PostgreSQL 변수는 **`PG_DB_HOST`**, **`PG_DB_PORT`**, **`PG_DB_NAME`**, **`PG_DB_USER`**, **`PG_DB_PASSWORD`** 입니다. (선택: `PG_DB_SSLMODE`, `PG_DB_CONNECT_TIMEOUT`.) 사용자 upsert 대상 테이블 이름은 **`PG_TABLE`**(기본 `ncue_user`). 배포 마이그레이션 동안 레거시 `DB_*` / `TABLE` 이름도 한동안 읽힐 수 있습니다. ### 2) 실행 방법 A: (로컬/간단) venv로 실행 diff --git a/flask_app.py b/flask_app.py index 4fc09f8..af2c4a7 100644 --- a/flask_app.py +++ b/flask_app.py @@ -64,6 +64,14 @@ def _env_pg(name_primary: str, name_legacy: str, default: str = "") -> str: return str(env(name_legacy, default) or "").strip() +def _env_pg_table() -> str: + """User table identifier: PG_TABLE, else legacy TABLE, default ncue_user.""" + v = env("PG_TABLE", "").strip() + if v: + return v + return str(env("TABLE", "ncue_user") or "").strip() or "ncue_user" + + DB_HOST = _env_pg("PG_DB_HOST", "DB_HOST").strip() DB_PORT = int(_env_pg("PG_DB_PORT", "DB_PORT", "5432") or "5432") DB_NAME = _env_pg("PG_DB_NAME", "DB_NAME").strip() @@ -72,7 +80,7 @@ DB_PASSWORD = _env_pg("PG_DB_PASSWORD", "DB_PASSWORD").strip() DB_SSLMODE = _env_pg("PG_DB_SSLMODE", "DB_SSLMODE", "prefer").strip() or "prefer" DB_CONNECT_TIMEOUT = int(_env_pg("PG_DB_CONNECT_TIMEOUT", "DB_CONNECT_TIMEOUT", "5") or "5") -TABLE = safe_ident(env("TABLE", "ncue_user") or "ncue_user") +TABLE = safe_ident(_env_pg_table()) CONFIG_TABLE = "ncue_app_config" CONFIG_TOKEN = env("CONFIG_TOKEN", "").strip() ADMIN_EMAILS = set(parse_email_csv(env("ADMIN_EMAILS", ""))) diff --git a/server.js b/server.js index 714b2fa..ce9d103 100644 --- a/server.js +++ b/server.js @@ -69,7 +69,14 @@ const DB_PORT = Number(pgEnv("PG_DB_PORT", "DB_PORT", "5432")) || 5432; const DB_NAME = mustPg("PG_DB_NAME", "DB_NAME"); const DB_USER = mustPg("PG_DB_USER", "DB_USER"); const DB_PASSWORD = mustPg("PG_DB_PASSWORD", "DB_PASSWORD"); -const TABLE = safeIdent(env("TABLE", "ncue_user") || "ncue_user"); + +function pgTableName() { + const v = String(env("PG_TABLE", "")).trim(); + if (v) return v; + return String(env("TABLE", "ncue_user")).trim() || "ncue_user"; +} + +const TABLE = safeIdent(pgTableName()); const CONFIG_TABLE = "ncue_app_config"; const CONFIG_TOKEN = env("CONFIG_TOKEN", "").trim(); const ADMIN_EMAILS = new Set(parseEmailCsv(env("ADMIN_EMAILS", "")));