Skip to content

Commit de70f18

Browse files
replace calls to repository ones
1 parent ec4255b commit de70f18

File tree

2 files changed

+41
-32
lines changed

2 files changed

+41
-32
lines changed

autosubmit_api/history/database_managers/experiment_history_db_manager.py

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
from typing import List, Optional
2727
from collections import namedtuple
2828

29+
from autosubmit_api.repositories.experiment_run import create_experiment_run_repository
30+
from autosubmit_api.repositories.job_data import create_experiment_job_data_repository
31+
2932
class ExperimentHistoryDbManager(DatabaseManager):
3033
""" Manages actions directly on the database.
3134
"""
@@ -37,6 +40,9 @@ def __init__(self, expid: str, basic_config: APIBasicConfig):
3740
if self.my_database_exists():
3841
self.set_db_version_models()
3942

43+
self.runs_repo = create_experiment_run_repository(expid)
44+
self.jobs_repo = create_experiment_job_data_repository(expid)
45+
4046
def set_db_version_models(self):
4147
self.db_version = self._get_pragma_version()
4248
self.experiment_run_row_model = Models.get_experiment_row_model(self.db_version)
@@ -56,43 +62,40 @@ def get_experiment_run_dc_with_max_id(self):
5662

5763
def _get_experiment_run_with_max_id(self):
5864
""" Get Models.ExperimentRunRow for the maximum id run. """
59-
statement = self.get_built_select_statement("experiment_run", "run_id > 0 ORDER BY run_id DESC LIMIT 0, 1")
60-
max_experiment_run = self.get_from_statement(self.historicaldb_file_path, statement)
61-
if len(max_experiment_run) == 0:
62-
raise Exception("No Experiment Runs registered.")
63-
return self.experiment_run_row_model(*max_experiment_run[0])
65+
max_experiment_run = self.runs_repo.get_last_run()
66+
return self.experiment_run_row_model(**(max_experiment_run.model_dump()))
6467

6568
def get_experiment_run_by_id(self, run_id: int) -> Optional[ExperimentRun]:
6669
if run_id:
6770
return ExperimentRun.from_model(self._get_experiment_run_by_id(run_id))
6871
return None
6972

7073
def _get_experiment_run_by_id(self, run_id: int) -> namedtuple:
71-
statement = self.get_built_select_statement("experiment_run", "run_id=?")
72-
arguments = (run_id,)
73-
experiment_run = self.get_from_statement_with_arguments(self.historicaldb_file_path, statement, arguments)
74-
if len(experiment_run) == 0:
75-
raise Exception("Experiment run {0} for experiment {1} does not exists.".format(run_id, self.expid))
76-
return self.experiment_run_row_model(*experiment_run[0])
74+
experiment_run = self.runs_repo.get_run_by_id(run_id)
75+
return self.experiment_run_row_model(**(experiment_run.model_dump()))
7776

7877
def get_experiment_runs_dcs(self) -> List[ExperimentRun]:
7978
experiment_run_rows = self._get_experiment_runs()
8079
return [ExperimentRun.from_model(row) for row in experiment_run_rows]
8180

8281
def _get_experiment_runs(self) -> List[namedtuple]:
83-
statement = self.get_built_select_statement("experiment_run")
84-
experiment_runs = self.get_from_statement(self.historicaldb_file_path, statement)
85-
return [self.experiment_run_row_model(*row) for row in experiment_runs]
82+
experiment_runs = self.runs_repo.get_all()
83+
return [
84+
self.experiment_run_row_model(**(run.model_dump()))
85+
for run in experiment_runs
86+
]
8687

8788
def get_job_data_dcs_all(self) -> List[JobData]:
8889
""" Gets all content from job_data ordered by id (from table). """
8990
return [JobData.from_model(row) for row in self._get_job_data_all()]
9091

9192
def _get_job_data_all(self):
9293
""" Gets all content from job_data as list of Models.JobDataRow from database. """
93-
statement = self.get_built_select_statement("job_data", "id > 0 ORDER BY id")
94-
job_data_rows = self.get_from_statement(self.historicaldb_file_path, statement)
95-
return [self.job_data_row_model(*row) for row in job_data_rows]
94+
job_data_rows = self.jobs_repo.get_all()
95+
return [
96+
self.job_data_row_model(**(job_data.model_dump()))
97+
for job_data in job_data_rows
98+
]
9699

97100
def get_job_data_dc_COMPLETED_by_wrapper_run_id(self, package_code: int, run_id: int) -> List[JobData]:
98101
if not run_id or package_code <= Models.RowType.NORMAL:
@@ -103,21 +106,23 @@ def get_job_data_dc_COMPLETED_by_wrapper_run_id(self, package_code: int, run_id:
103106
return [JobData.from_model(row) for row in job_data_rows]
104107

105108
def _get_job_data_dc_COMPLETED_by_wrapper_run_id(self, package_code: int, run_id: int) -> List[namedtuple]:
106-
statement = self.get_built_select_statement("job_data", "run_id=? and rowtype=? and status=? ORDER BY id")
107-
arguments = (run_id, package_code, "COMPLETED")
108-
job_data_rows = self.get_from_statement_with_arguments(self.historicaldb_file_path, statement, arguments)
109-
return [self.job_data_row_model(*row) for row in job_data_rows]
109+
job_data_rows = self.jobs_repo.get_job_data_COMPLETED_by_rowtype_run_id(package_code, run_id)
110+
return [
111+
self.job_data_row_model(**(job_data.model_dump()))
112+
for job_data in job_data_rows
113+
]
110114

111115
def get_job_data_dcs_COMPLETED_by_section(self, section: str) -> List[JobData]:
112116
# arguments = {"status": "COMPLETED", "section": section}
113117
job_data_rows = self._get_job_data_COMPLETD_by_section(section)
114118
return [JobData.from_model(row) for row in job_data_rows]
115119

116120
def _get_job_data_COMPLETD_by_section(self, section):
117-
statement = self.get_built_select_statement("job_data", "status=? and (section=? or member=?) ORDER BY id")
118-
arguments = ("COMPLETED", section, section)
119-
job_data_rows = self.get_from_statement_with_arguments(self.historicaldb_file_path, statement, arguments)
120-
return [self.job_data_row_model(*row) for row in job_data_rows]
121+
job_data_rows = self.jobs_repo.get_job_data_COMPLETD_by_section(section)
122+
return [
123+
self.job_data_row_model(**(job_data.model_dump()))
124+
for job_data in job_data_rows
125+
]
121126

122127
def get_all_last_job_data_dcs(self):
123128
""" Gets JobData data classes in job_data for last=1. """
@@ -126,20 +131,23 @@ def get_all_last_job_data_dcs(self):
126131

127132
def _get_all_last_job_data_rows(self):
128133
""" Get List of Models.JobDataRow for last=1. """
129-
statement = self.get_built_select_statement("job_data", "last=1 and rowtype >= 2")
130-
job_data_rows = self.get_from_statement(self.historicaldb_file_path, statement)
131-
return [self.job_data_row_model(*row) for row in job_data_rows]
134+
job_data_rows = self.jobs_repo.get_last_job_data()
135+
return [
136+
self.job_data_row_model(**(job_data.model_dump()))
137+
for job_data in job_data_rows
138+
]
132139

133140
def get_job_data_dcs_by_name(self, job_name: str) -> List[JobData]:
134141
job_data_rows = self._get_job_data_by_name(job_name)
135142
return [JobData.from_model(row) for row in job_data_rows]
136143

137144
def _get_job_data_by_name(self, job_name: str) -> List[namedtuple]:
138145
""" Get List of Models.JobDataRow for job_name """
139-
statement = self.get_built_select_statement("job_data", "job_name=? ORDER BY counter DESC")
140-
arguments = (job_name,)
141-
job_data_rows = self.get_from_statement_with_arguments(self.historicaldb_file_path, statement, arguments)
142-
return [self.job_data_row_model(*row) for row in job_data_rows]
146+
job_data_rows = self.jobs_repo.get_jobs_by_name(job_name)
147+
return [
148+
self.job_data_row_model(**(job_data.model_dump()))
149+
for job_data in job_data_rows
150+
]
143151

144152
def _get_pragma_version(self) -> int:
145153
""" Gets current pragma version as int. """

autosubmit_api/repositories/job_data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class ExperimentJobDataModel(BaseModel):
3939
err: Any
4040
rowstatus: Any
4141
children: Any
42+
platform_output: Any
4243

4344

4445
class ExperimentJobDataRepository(ABC):

0 commit comments

Comments
 (0)