refactor: remove controller and multiple execution routes
This commit is contained in:
		
							parent
							
								
									ddbd2225cc
								
							
						
					
					
						commit
						84fe1a0480
					
				
					 4 changed files with 25 additions and 48 deletions
				
			
		
							
								
								
									
										42
									
								
								src/app.py
									
										
									
									
									
								
							
							
						
						
									
										42
									
								
								src/app.py
									
										
									
									
									
								
							|  | @ -1,38 +1,42 @@ | ||||||
| import argparse | import argparse | ||||||
| 
 | 
 | ||||||
| from constants import EOLAS_DIRECTORY |  | ||||||
| from controllers.controller import Controller |  | ||||||
| from services.database_service import DatabaseService | from services.database_service import DatabaseService | ||||||
| from services.parse_file_service import ParseFileService | from services.parse_file_service import ParseFileService | ||||||
| from services.table_service import TableService | from services.table_service import TableService | ||||||
| 
 | 
 | ||||||
| database_service = DatabaseService("eolas") |  | ||||||
| database_connection = database_service.connect() |  | ||||||
| table_service = TableService(database_connection) |  | ||||||
| parse_file_service = ParseFileService(EOLAS_DIRECTORY) |  | ||||||
| 
 |  | ||||||
| controller = Controller(database_service, table_service, parse_file_service) |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|     parser = argparse.ArgumentParser( |     parser = argparse.ArgumentParser( | ||||||
|         prog="eolas-db", description="Eolas database manager." |         prog="eolas-db", description="Eolas database generator." | ||||||
|     ) |     ) | ||||||
|  | 
 | ||||||
|     parser.add_argument( |     parser.add_argument( | ||||||
|         "command", |         "--source", | ||||||
|         choices=["populate-database"], |         type=str, | ||||||
|         help="Command to execute", |         required=True, | ||||||
|  |         help="Source directory for markdown files", | ||||||
|     ) |     ) | ||||||
|  | 
 | ||||||
|  |     parser.add_argument( | ||||||
|  |         "--target", | ||||||
|  |         type=str, | ||||||
|  |         required=True, | ||||||
|  |         help="Output path for SQLite database file", | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|     args = parser.parse_args() |     args = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|     if args.command == "populate-database": |     SOURCE_DIRECTORY = args.source | ||||||
|         controller.execute("populate") |     TARGET_DIRECTORY = args.target | ||||||
| 
 | 
 | ||||||
|     if args.command == "generate-graph": |     database_service = DatabaseService("eolas", TARGET_DIRECTORY) | ||||||
|         controller.execute("graph") |     database_connection = database_service.connect() | ||||||
|  |     table_service = TableService(database_connection) | ||||||
|  |     parse_file_service = ParseFileService(SOURCE_DIRECTORY) | ||||||
| 
 | 
 | ||||||
|     if args.command == "export-tags": |     entries = parse_file_service.parse_source_directory() | ||||||
|         controller.execute("tags") |     table_service.populate_tables(entries) | ||||||
|  |     database_service.disconnect() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|  |  | ||||||
|  | @ -1,2 +0,0 @@ | ||||||
| EOLAS_DIRECTORY = "/home/thomas/repos/eolas/zk" |  | ||||||
| GRAPH_OUTPUT_DIRECTORY = "/home/thomas/repos/eolas-db/out" |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| class Controller: |  | ||||||
|     def __init__( |  | ||||||
|         self, |  | ||||||
|         database_service, |  | ||||||
|         table_service, |  | ||||||
|         parse_file_service, |  | ||||||
|     ): |  | ||||||
|         self.database_service = database_service |  | ||||||
|         self.table_service = table_service |  | ||||||
|         self.parse_file_service = parse_file_service |  | ||||||
| 
 |  | ||||||
|     def execute(self, operation): |  | ||||||
|         try: |  | ||||||
|             match operation: |  | ||||||
|                 case "populate": |  | ||||||
|                     return self.__populate_database() |  | ||||||
|         except Exception as e: |  | ||||||
|             raise Exception(f"ERROR {e}") |  | ||||||
|         finally: |  | ||||||
|             self.database_service.disconnect() |  | ||||||
| 
 |  | ||||||
|     def __populate_database(self): |  | ||||||
|         entries = self.parse_file_service.parse_source_directory() |  | ||||||
|         self.table_service.populate_tables(entries) |  | ||||||
|         self.database_service.disconnect() |  | ||||||
|  | @ -4,9 +4,9 @@ from typing import Optional | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class DatabaseService: | class DatabaseService: | ||||||
|     def __init__(self, db_name): |     def __init__(self, db_name, db_path): | ||||||
|         self.db_name = db_name |         self.db_name = db_name | ||||||
|         self.db_path = "/home/thomas/repos/eolas-db/db" |         self.db_path = db_path | ||||||
|         self.connection: Optional[sqlite3.Connection] = None |         self.connection: Optional[sqlite3.Connection] = None | ||||||
| 
 | 
 | ||||||
|     def connect(self) -> Optional[sqlite3.Connection]: |     def connect(self) -> Optional[sqlite3.Connection]: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue