Skip to content

api-server(config): AppEnv + 두 DB pool 구조 도입 #336

Description

@cocoyoon

Part of #333.

Scope

api-server가 prod와 assets 두 Supabase 프로젝트에 각각 연결하도록 구조 변경.

Deliverables

  • `packages/api-server/src/config.rs`
    • `pub enum AppEnv { Local, Staging, Production }` + `from_env()`
    • `ServerConfig`에 `pub app_env: AppEnv` 추가
    • `AssetsDatabaseConfig` 구조체 (url, max_connections=20 기본, min_connections=2 기본, connect_timeout, idle_timeout)
    • `AppConfig`에 `pub assets_database: AssetsDatabaseConfig`
    • `from_env`: `ASSETS_DATABASE_URL` 읽고 없을 시 `DATABASE_URL` fallback + WARN (단, `AppEnv::Production`에선 필수)
    • `pub async fn create_assets_db_connection(&self)` 추가
  • `packages/api-server/src/lib.rs`
    • `AppState`에 `pub assets_db: Arc` 추가 (기존 `db`는 prod 역할 유지)
    • `with_db_connection` 시그니처 유지, 내부에서 assets_db 자체 오픈
  • `packages/api-server/src/main.rs`
    • prod `db_connection` 직후 `let assets_db = config.create_assets_db_connection().await?;` + info log
    • SeaORM `Migrator::up` 은 prod 에만 호출 (assets는 Supabase CLI SOT)

Acceptance

  • `cargo check` 통과
  • 로컬 기동 시 로그에 "Database connection established" + "Assets DB connection established" 둘 다 출력
  • assets URL 미설정 시(비-prod) WARN + DATABASE_URL로 fallback

Depends on

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions