mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-10-31 04:02:03 +01:00
Phase 2: DATABASE_BACKEND switch, component config, schema scoping
- config: add DatabaseBackend enum + DATABASE_* component vars on CommonSettings (host/port/name/schema/user/password, defaults 'meshcorehub'); single effective_database_url resolver with precedence DATABASE_URL > postgres (assembled, fail-fast on missing vars) > SQLite default. effective_database_schema returns the schema only for Postgres. Collapses the duplicated resolver/field out of Collector/API settings. - database: create_database_engine/DatabaseManager accept a schema arg and scope Postgres connections via search_path (psycopg2 -c options; asyncpg server_settings). No-op for SQLite. - alembic/env: migrate into the instance schema (version_table_schema + CREATE SCHEMA + search_path) for Postgres; fix online render_as_batch to be SQLite-only (matching the offline path). - .env.example: document the DATABASE_* block. SQLite behaviour unchanged: default no-env path resolves to the same URL (new regression tests), full suite green (1051 passed), fresh db upgrade OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
9eab07d244
commit
f342f5bc70
5 files changed
+240
-52
No files matched your search
@@ -66,6 +66,29 @@ LOG_LEVEL=INFO
|
||||
# └── meshcore.db # SQLite database
|
||||
DATA_HOME=./data
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Database
|
||||
# -----------------------------------------------------------------------------
|
||||
# SQLite is the zero-config default and needs nothing here — it lives at
|
||||
# ${DATA_HOME}/collector/meshcore.db.
|
||||
#
|
||||
# To use PostgreSQL instead, set DATABASE_BACKEND=postgres and fill in the
|
||||
# DATABASE_* values below (the bundled postgres container derives its
|
||||
# POSTGRES_USER/PASSWORD/DB from DATABASE_USER/PASSWORD/NAME). You must also
|
||||
# activate the compose 'postgres' profile, e.g. `docker compose --profile postgres up`.
|
||||
#
|
||||
# DATABASE_BACKEND=postgres
|
||||
# DATABASE_HOST=postgres
|
||||
# DATABASE_PORT=5432
|
||||
# DATABASE_NAME=meshcorehub
|
||||
# DATABASE_SCHEMA=meshcorehub # override per instance (e.g. prod, stg) on a shared cluster
|
||||
# DATABASE_USER=meshcorehub
|
||||
# DATABASE_PASSWORD= # required for postgres; e.g. `openssl rand -base64 32`
|
||||
#
|
||||
# Advanced: set DATABASE_URL to a full SQLAlchemy URL to override all of the above
|
||||
# (e.g. a managed/external Postgres). Takes precedence over DATABASE_BACKEND.
|
||||
# DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/dbname
|
||||
|
||||
# Directory containing seed data files for import
|
||||
# Default: ./seed (relative to docker-compose.yml location)
|
||||
# Inside containers this is mapped to /seed
|
||||
|
||||
Reference in new issue
Block a user