コード例 #1
0
def test_config(pytestconfig: Config) -> Configuration:
    config = load_configuration("testing")
    if config.tests.testcontainers:
        config.database.dsn = pytestconfig.database_container.get_connection_url()
        redis_exposed_port = pytestconfig.redis_container.get_exposed_port(
            pytestconfig.redis_container.port_to_expose
        )
        config.cache.dsn = f"redis://localhost:{redis_exposed_port}"
    config.database.dsn = config.database.dsn.replace("psycopg2", "asyncpg")
    return config
コード例 #2
0
def pytest_configure(config: Config) -> None:
    app_config = load_configuration("testing")
    if app_config.tests.testcontainers:
        config.database_container = PostgresContainer(
            image="postgres:12",
            user="******",
            password="******",
            dbname="backend",
        )
        config.redis_container = RedisContainer(image="redis:alpine")
        config.database_container.start()
        config.redis_container.start()
コード例 #3
0
def pytest_unconfigure(config: Config) -> None:
    app_config = load_configuration("testing")
    if app_config.tests.testcontainers:
        config.database_container.stop()
        config.redis_container.stop()
コード例 #4
0
import uvicorn

from {{cookiecutter.project_slug}}.app_factory import create_app
from {{cookiecutter.project_slug}}.config import load_configuration

config = load_configuration()
app = create_app(config)

if __name__ == "__main__":
    uvicorn.run(
        "{{cookiecutter.project_slug}}.app:app",
        host=config.server.host,
        port=config.server.port,
        reload=config.debug,
        log_config=None,
    )
コード例 #5
0
async def _create_user(username: str, password: str) -> None:
    config = load_configuration()
    engine = get_engine(config.database)
    async with AsyncSession(engine) as session:
        await session.run_sync(create_user, username, password)
コード例 #6
0
async def _init_database() -> None:
    config = load_configuration()
    engine = get_engine(config.database)
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.drop_all)
        await conn.run_sync(Base.metadata.create_all)