refactor: use context manager for database connection
This commit is contained in:
		
							parent
							
								
									84fe1a0480
								
							
						
					
					
						commit
						6df4c5be07
					
				
					 2 changed files with 16 additions and 10 deletions
				
			
		
							
								
								
									
										15
									
								
								src/app.py
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								src/app.py
									
										
									
									
									
								
							|  | @ -1,6 +1,6 @@ | |||
| import argparse | ||||
| 
 | ||||
| from services.database_service import DatabaseService | ||||
| from database_connection import DatabaseConnection | ||||
| from services.parse_file_service import ParseFileService | ||||
| from services.table_service import TableService | ||||
| 
 | ||||
|  | @ -29,14 +29,11 @@ def main(): | |||
|     SOURCE_DIRECTORY = args.source | ||||
|     TARGET_DIRECTORY = args.target | ||||
| 
 | ||||
|     database_service = DatabaseService("eolas", TARGET_DIRECTORY) | ||||
|     database_connection = database_service.connect() | ||||
|     table_service = TableService(database_connection) | ||||
|     parse_file_service = ParseFileService(SOURCE_DIRECTORY) | ||||
| 
 | ||||
|     entries = parse_file_service.parse_source_directory() | ||||
|     table_service.populate_tables(entries) | ||||
|     database_service.disconnect() | ||||
|     with DatabaseConnection("eolas", TARGET_DIRECTORY) as conn: | ||||
|         table_service = TableService(conn) | ||||
|         parse_file_service = ParseFileService(SOURCE_DIRECTORY) | ||||
|         entries = parse_file_service.parse_source_directory() | ||||
|         table_service.populate_tables(entries) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import sqlite3 | |||
| from typing import Optional | ||||
| 
 | ||||
| 
 | ||||
| class DatabaseService: | ||||
| class DatabaseConnection: | ||||
|     def __init__(self, db_name, db_path): | ||||
|         self.db_name = db_name | ||||
|         self.db_path = db_path | ||||
|  | @ -31,3 +31,12 @@ class DatabaseService: | |||
|                 self.connection = None | ||||
|         except Exception as e: | ||||
|             raise Exception(f"ERROR Problem disconnecting from database: {e}") | ||||
| 
 | ||||
|     def __enter__(self) -> sqlite3.Connection: | ||||
|         connection = self.connect() | ||||
|         if connection is None: | ||||
|             raise RuntimeError("Failed to establish database connection") | ||||
|         return connection | ||||
| 
 | ||||
|     def __exit__(self, exc_type, exc_val, exc_tb) -> None: | ||||
|         self.disconnect() | ||||
		Loading…
	
	Add table
		
		Reference in a new issue