diff --git a/src/pilgrim/application.py b/src/pilgrim/application.py index 7ab3acf..1d2f11a 100644 --- a/src/pilgrim/application.py +++ b/src/pilgrim/application.py @@ -7,14 +7,15 @@ from pilgrim.utils import ConfigManager class Application: def __init__(self): self.config_manager = ConfigManager() + self.config_manager.read_config() # Chamar antes de criar o Database self.database = Database(self.config_manager) session = self.database.session() session_manager = ServiceManager() session_manager.set_session(session) - self.ui = UIApp(session_manager,self.config_manager) + self.ui = UIApp(session_manager, self.config_manager) def run(self): - self.config_manager.read_config() + print(f"URL do banco: {self.config_manager.database_url}") self.database.create() self.ui.run() diff --git a/src/pilgrim/database.py b/src/pilgrim/database.py index fd144a0..8d472af 100644 --- a/src/pilgrim/database.py +++ b/src/pilgrim/database.py @@ -12,10 +12,17 @@ Base = declarative_base() class Database: - def __init__(self,config_manager:ConfigManager): - db_path = config_manager.database_url + + def __init__(self, config_manager: ConfigManager): + self.db_path = config_manager.database_url + + # Garantir que o diretório existe + db_dir = os.path.dirname(self.db_path) + if not os.path.exists(db_dir): + os.makedirs(db_dir, exist_ok=True) + self.engine = create_engine( - f"sqlite:///{config_manager.database_url}", + f"sqlite:///{self.db_path}", echo=False, connect_args={"check_same_thread": False}, ) diff --git a/src/pilgrim/ui/screens/new_diary_modal.py b/src/pilgrim/ui/screens/new_diary_modal.py index e91f516..ecf25bc 100644 --- a/src/pilgrim/ui/screens/new_diary_modal.py +++ b/src/pilgrim/ui/screens/new_diary_modal.py @@ -12,7 +12,7 @@ class NewDiaryModal(ModalScreen[str]): Binding("escape", "cancel", "Cancel"), Binding("enter", "create_diary", "Create",priority=True), ] - def __init__(self,autoopen=True): + def __init__(self,autoopen:bool = True): super().__init__() self.auto_open = autoopen self.name_input = Input(id="NewDiaryModal-NameInput",classes="NewDiaryModal-NameInput") # This ID is fine, it's specific to the input diff --git a/src/pilgrim/utils/config_manager.py b/src/pilgrim/utils/config_manager.py index 66d643c..59c1faf 100644 --- a/src/pilgrim/utils/config_manager.py +++ b/src/pilgrim/utils/config_manager.py @@ -53,9 +53,14 @@ class ConfigManager(metaclass=SingletonMeta): self.read_config() def create_config(self, config: dict = None): + # Garantir que o diretório de configuração existe + config_dir = DirectoryManager.get_config_directory() + if not os.path.exists(config_dir): + os.makedirs(config_dir, exist_ok=True) + default = { "database": { - "url": f"{DirectoryManager.get_config_directory()}/database.db", + "url": f"{config_dir}/database.db", "type": "sqlite" }, "settings": { @@ -67,11 +72,12 @@ class ConfigManager(metaclass=SingletonMeta): } if config is None: config = default + try: - with open(f"{DirectoryManager.get_config_directory()}/config.toml", "wb") as f: + with open(f"{config_dir}/config.toml", "wb") as f: tomli_w.dump(config, f) - except FileNotFoundError: - print("Error: config.toml not found.") + except Exception as e: + print(f"Erro ao criar config: {e}") def save_config(self): if self.__data is None: