fix: re-mount routes for restored extensions

This commit is contained in:
Vlad Stan 2023-01-19 11:12:48 +02:00
parent aa006b66d1
commit 6773f33ad1

View file

@ -126,22 +126,18 @@ async def check_installed_extensions(app: FastAPI):
The 'data' directory (where the '.zip' files live) is expected to persist state.
Zips that are missing will be re-downloaded.
"""
shutil.rmtree(os.path.join("lnbits", "upgrades"), True)
installed_extensions = await get_installed_extensions()
for ext in installed_extensions:
try:
installed = check_installed_extension(ext)
if not installed:
extension = Extension.from_installable_ext(ext)
register_ext_routes(app, extension)
current_version = (await db_versions()).get(ext.id, 0)
await migrate_extension_database(extension, current_version)
await restore_installed_extension(app, ext)
logger.warning(f"✔️ Successfully re-installed extension: {ext.id}")
except:
logger.warning(f"Failed to re-install extension: {ext.id}")
shutil.rmtree(os.path.join("lnbits", "upgrades"), True)
def check_installed_extension(ext: InstallableExtension) -> bool:
zip_files = glob.glob(
@ -158,6 +154,19 @@ def check_installed_extension(ext: InstallableExtension) -> bool:
return False
async def restore_installed_extension(app: FastAPI, ext: InstallableExtension):
extension = Extension.from_installable_ext(ext)
register_ext_routes(app, extension)
current_version = (await db_versions()).get(ext.id, 0)
await migrate_extension_database(extension, current_version)
# mount routes for the new version
core_app_extra.register_new_ext_routes(extension)
if ext.module_installed:
ext.nofiy_upgrade()
def register_routes(app: FastAPI) -> None:
"""Register FastAPI routes / LNbits extensions."""
app.include_router(core_app)