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