import os from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp from blueprints import Routes, Devices, Sensors, Measurements from logic import Constants from logic.BackupService import BackupService from logic.DiscoveryService import DiscoveryService LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME) class StorageLeaf(FlaskBaseApp): def __init__(self, appName: str): super().__init__(appName, os.path.dirname(__file__), LOGGER, serveRobotsTxt=False) databaseSettings = self._settings['database'] self._backupService = BackupService(databaseSettings['databasePath'], **databaseSettings['backup']) discoverySettings = self._settings['discovery'] discoverySettings['apiPort'] = self._settings['server']['port'] self._discoveryService = DiscoveryService(**discoverySettings) self._discoveryService.start() def _register_blueprints(self, app): app.register_blueprint(Routes.construct_blueprint(self._settings, self._version)) app.register_blueprint(Devices.construct_blueprint(self._settings, self._backupService)) app.register_blueprint(Sensors.construct_blueprint(self._settings, self._backupService)) app.register_blueprint(Measurements.construct_blueprint(self._settings, self._backupService)) return app if __name__ == '__main__': website = StorageLeaf(Constants.APP_NAME) website.start_server()