import sqlalchemy as sa from anydi import Module, provider from fansifter_common.adapters.encrypter import DummyEncrypter, Encrypter from jinja2sql import Jinja2SQL from ows_text_campaigns.adapters.db import DB, PgDB from ows_text_campaigns.config import Settings class TestModule(Module): @provider(scope="singleton", override=True) def db(self, settings: Settings, jinja2sql: Jinja2SQL) -> DB: return DB( url=sa.URL.create( drivername="postgresql+psycopg", username=settings.snowflake_user, password=settings.snowflake_password, host=settings.snowflake_host, port=settings.snowflake_port, database=settings.snowflake_database, ), session_args={ "expire_on_commit": False, "autoflush": True, }, jinja2sql=jinja2sql, ) @provider(scope="singleton", override=True) def pg_db(self, settings: Settings, jinja2sql: Jinja2SQL) -> PgDB: return PgDB( url=settings.postgres_url, session_args={ "expire_on_commit": False, "autoflush": True, }, jinja2sql=jinja2sql, ) @provider(scope="singleton", override=True) def encrypter(self) -> Encrypter: return DummyEncrypter()