- Provide a new reuqired parameter: [database]pooling_mode and use it during SQLAlchemy engine initialisation. - Update tests and configuration (including sample configuration). - Adjust repository unit test to load config during setup. - Pass an engine instance to repository constructors instead of connections. Engine keeps a connection pool and we rely on it.
28 lines
758 B
Python
28 lines
758 B
Python
"""Data structures and utilities to make keyring access easier.
|
|
|
|
IMPORTANT: This module has to be loaded _after_ initialisation of the logging
|
|
module.
|
|
"""
|
|
|
|
import lacre.config as conf
|
|
from lacre._keyringcommon import KeyRing, KeyCache
|
|
from lacre.repositories import IdentityRepository, init_engine
|
|
import logging
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
def init_keyring() -> KeyRing:
|
|
"""Initialise appropriate type of keyring."""
|
|
url = conf.get_item('database', 'url')
|
|
db_engine = init_engine(url)
|
|
return IdentityRepository(engine=db_engine)
|
|
|
|
|
|
def freeze_and_load_keys() -> KeyCache:
|
|
"""Load and return keys.
|
|
|
|
Doesn't refresh the keys when they change on disk.
|
|
"""
|
|
keyring = init_keyring()
|
|
return keyring.freeze_identities()
|