in patches/4.0.0/main.py [0:0]
def patch(tinydb_root: Path, mongo_uri: str, mongo_database: str,
secret_key: str, logging_filename: Path | None = None) -> None:
if logging_filename:
h = logging.FileHandler(logging_filename)
h.setFormatter(logging.Formatter(LOG_FORMAT))
_LOG.addHandler(h)
os.environ[Env.MONGO_DATABASE.value] = mongo_database
os.environ[Env.MONGO_URI.value] = mongo_uri
os.environ[Env.SECRET_KEY.value] = secret_key
os.environ[Env.MODE.value] = ServiceMode.ONPREM.value
if not tinydb_root.is_dir() or not tinydb_root.exists():
_LOG.error(f'{tinydb_root} must be a directory that exists')
sys.exit(1)
for filename in tinydb_root.iterdir():
try:
db_type = DBType(filename.stem)
except ValueError:
_LOG.warning(f'Not known db name: {filename.stem}')
continue
_LOG.info(f'Going to patch {filename.stem}')
try:
with open(filename, 'r') as fp:
data = json.load(fp)
except json.JSONDecodeError:
_LOG.warning('Invalid JSON inside. Skipping')
continue
try:
patch_collection(data, db_type)
except Exception:
_LOG.exception('Unexpected exception occurred. Ending patch')
sys.exit(1)
_LOG.info('Collection was patched')