kopia lustrzana https://github.com/bugout-dev/moonstream
Moonstreamdb with read only
rodzic
570131d9e1
commit
ce9584a89e
|
@ -41,6 +41,7 @@ sed --in-place 's|^export * ||' "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
||||||
sed --in-place 's|"||g' "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
sed --in-place 's|"||g' "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
||||||
|
|
||||||
sed -i "s|^MOONSTREAM_DB_URI=.*|MOONSTREAM_DB_URI=$DOCKER_MOONSTREAMDB_DB_URI|" "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
sed -i "s|^MOONSTREAM_DB_URI=.*|MOONSTREAM_DB_URI=$DOCKER_MOONSTREAMDB_DB_URI|" "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
||||||
|
sed -i "s|^MOONSTREAM_DB_URI_READ_ONLY=.*|MOONSTREAM_DB_URI_READ_ONLY=$DOCKER_MOONSTREAMDB_DB_URI|" "$SCRIPT_DIR/$DOCKER_MOONSTREAMDB_ENV_FILE"
|
||||||
|
|
||||||
# Generate alembic config
|
# Generate alembic config
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
# Required environment variables to work with database CLI
|
# Required environment variables to work with database CLI
|
||||||
export MOONSTREAM_DB_URI="postgresql://<username>:<password>@<db_host>:<db_port>/<db_name>"
|
export MOONSTREAM_DB_URI="postgresql://<username>:<password>@<db_host>:<db_port>/<db_name>"
|
||||||
|
export MOONSTREAM_DB_URI_READ_ONLY="postgresql://<username>:<password>@<db_host>:<db_port>/<db_name>"
|
||||||
export MOONSTREAM_POOL_SIZE=0
|
export MOONSTREAM_POOL_SIZE=0
|
||||||
|
|
|
@ -11,6 +11,10 @@ MOONSTREAM_DB_URI = os.environ.get("MOONSTREAM_DB_URI")
|
||||||
if MOONSTREAM_DB_URI is None:
|
if MOONSTREAM_DB_URI is None:
|
||||||
raise ValueError("MOONSTREAM_DB_URI environment variable must be set")
|
raise ValueError("MOONSTREAM_DB_URI environment variable must be set")
|
||||||
|
|
||||||
|
MOONSTREAM_DB_URI_READ_ONLY = os.environ.get("MOONSTREAM_DB_URI_READ_ONLY")
|
||||||
|
if MOONSTREAM_DB_URI_READ_ONLY is None:
|
||||||
|
raise ValueError("MOONSTREAM_DB_URI_READ_ONLY environment variable must be set")
|
||||||
|
|
||||||
MOONSTREAM_POOL_SIZE_RAW = os.environ.get("MOONSTREAM_POOL_SIZE", 0)
|
MOONSTREAM_POOL_SIZE_RAW = os.environ.get("MOONSTREAM_POOL_SIZE", 0)
|
||||||
try:
|
try:
|
||||||
if MOONSTREAM_POOL_SIZE_RAW is not None:
|
if MOONSTREAM_POOL_SIZE_RAW is not None:
|
||||||
|
@ -60,3 +64,30 @@ def yield_db_session() -> Session:
|
||||||
|
|
||||||
|
|
||||||
yield_db_session_ctx = contextmanager(yield_db_session)
|
yield_db_session_ctx = contextmanager(yield_db_session)
|
||||||
|
|
||||||
|
# Read only
|
||||||
|
|
||||||
|
RO_engine = create_engine(
|
||||||
|
MOONSTREAM_DB_URI_READ_ONLY,
|
||||||
|
pool_size=MOONSTREAM_POOL_SIZE,
|
||||||
|
connect_args={
|
||||||
|
"options": f"-c statement_timeout={MOONSTREAM_DB_STATEMENT_TIMEOUT_MILLIS}"
|
||||||
|
},
|
||||||
|
)
|
||||||
|
RO_SessionLocal = sessionmaker(bind=RO_engine)
|
||||||
|
|
||||||
|
|
||||||
|
def yield_db_read_only_session() -> Session:
|
||||||
|
"""
|
||||||
|
Yields a database connection (created using environment variables).
|
||||||
|
As per FastAPI docs:
|
||||||
|
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency
|
||||||
|
"""
|
||||||
|
session = RO_SessionLocal()
|
||||||
|
try:
|
||||||
|
yield session
|
||||||
|
finally:
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
yield_db_read_only_session_ctx = contextmanager(yield_db_read_only_session)
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
Moonstream database version.
|
Moonstream database version.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
MOONSTREAMDB_VERSION = "0.2.2"
|
MOONSTREAMDB_VERSION = "0.2.3"
|
||||||
|
|
Ładowanie…
Reference in New Issue