1
1
from typing import Union
2
- from datetime import datetime
3
2
4
- import logging
5
3
import jsonpickle
6
4
from rocketpy .environment .environment import Environment as RocketPyEnvironment
7
5
from fastapi import HTTPException , status
8
6
7
+ from lib import logging
9
8
from lib .controllers import parse_error
10
9
from lib .models .environment import Env
11
10
from lib .repositories .environment import EnvRepository
@@ -69,23 +68,22 @@ async def create_env(self) -> "Union[EnvCreated, HTTPException]":
69
68
Returns:
70
69
views.EnvCreated
71
70
"""
72
- env_repo = EnvRepository (environment = self .env )
73
71
try :
74
- await env_repo .create_env ()
72
+ created_env = await EnvRepository (
73
+ environment = self .env
74
+ ).create_env ()
75
75
except Exception as e :
76
76
exc_str = parse_error (e )
77
- logging .error (
78
- f"[{ datetime .now ()} ] controllers.environment.create_env: { exc_str } "
79
- )
77
+ logging .error (f"controllers.environment.create_env: { exc_str } " )
80
78
raise HTTPException (
81
79
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
82
80
detail = f"Failed to create environment: { e } " ,
83
81
) from e
84
82
else :
85
- return EnvCreated (env_id = env_repo .env_id )
83
+ return EnvCreated (env_id = created_env .env_id )
86
84
finally :
87
85
logging .info (
88
- f"[ { datetime . now () } ] Call to controllers.environment.create_env completed; params: Env { hash (self .env )} "
86
+ f"Call to controllers.environment.create_env completed; params: Env { hash (self .env )} "
89
87
)
90
88
91
89
@staticmethod
@@ -102,14 +100,11 @@ async def get_env_by_id(env_id: int) -> "Union[Env, HTTPException]":
102
100
Raises:
103
101
HTTP 404 Not Found: If the env is not found in the database.
104
102
"""
105
- env_repo = EnvRepository (env_id = env_id )
106
103
try :
107
- read_env = await env_repo .get_env ()
104
+ read_env = await EnvRepository ( env_id = env_id ) .get_env ()
108
105
except Exception as e :
109
106
exc_str = parse_error (e )
110
- logging .error (
111
- f"[{ datetime .now ()} ] controllers.environment.get_env_by_id: { exc_str } "
112
- )
107
+ logging .error (f"controllers.environment.get_env_by_id: { exc_str } " )
113
108
raise HTTPException (
114
109
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
115
110
detail = f"Failed to read environment: { e } " ,
@@ -123,7 +118,7 @@ async def get_env_by_id(env_id: int) -> "Union[Env, HTTPException]":
123
118
)
124
119
finally :
125
120
logging .info (
126
- f"[ { datetime . now () } ] Call to controllers.environment.get_env_by_id completed; params: EnvID { env_id } "
121
+ f"Call to controllers.environment.get_env_by_id completed; params: EnvID { env_id } "
127
122
)
128
123
129
124
@classmethod
@@ -143,31 +138,27 @@ async def get_rocketpy_env_as_jsonpickle(
143
138
Raises:
144
139
HTTP 404 Not Found: If the env is not found in the database.
145
140
"""
146
- env_repo = EnvRepository (env_id = env_id )
147
141
try :
148
- read_env = await env_repo .get_env ()
142
+ read_env = await cls .get_env_by_id (env_id )
143
+ except HTTPException as e :
144
+ raise e from e
149
145
except Exception as e :
150
146
exc_str = parse_error (e )
151
147
logging .error (
152
- f"[ { datetime . now () } ] controllers.environment.get_rocketpy_env_as_jsonpickle: { exc_str } "
148
+ f"controllers.environment.get_rocketpy_env_as_jsonpickle: { exc_str } "
153
149
)
154
150
raise HTTPException (
155
151
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
156
152
detail = f"Failed to read environment: { e } " ,
157
153
) from e
158
154
else :
159
- if read_env :
160
- rocketpy_env = cls .get_rocketpy_env (read_env )
161
- return EnvPickle (
162
- jsonpickle_rocketpy_env = jsonpickle .encode (rocketpy_env )
163
- )
164
- raise HTTPException (
165
- status_code = status .HTTP_404_NOT_FOUND ,
166
- detail = "Environment not found" ,
155
+ rocketpy_env = await cls .get_rocketpy_env (read_env )
156
+ return EnvPickle (
157
+ jsonpickle_rocketpy_env = jsonpickle .encode (rocketpy_env )
167
158
)
168
159
finally :
169
160
logging .info (
170
- f"[ { datetime . now () } ] Call to controllers.environment.get_rocketpy_env_as_jsonpickle completed; params: EnvID { env_id } "
161
+ f"Call to controllers.environment.get_rocketpy_env_as_jsonpickle completed; params: EnvID { env_id } "
171
162
)
172
163
173
164
async def update_env (
@@ -185,30 +176,25 @@ async def update_env(
185
176
Raises:
186
177
HTTP 404 Not Found: If the env is not found in the database.
187
178
"""
188
- env_repo = EnvRepository (environment = self .env , env_id = env_id )
189
179
try :
190
- read_env = await env_repo .get_env ()
191
- if read_env :
192
- await env_repo .update_env ()
193
- else :
194
- raise HTTPException (
195
- status_code = status .HTTP_404_NOT_FOUND ,
196
- detail = "Environment not found" ,
197
- )
180
+ await EnvController .get_env_by_id (env_id )
181
+ updated_env = await EnvRepository (
182
+ environment = self .env , env_id = env_id
183
+ ).update_env ()
184
+ except HTTPException as e :
185
+ raise e from e
198
186
except Exception as e :
199
187
exc_str = parse_error (e )
200
- logging .error (
201
- f"[{ datetime .now ()} ] controllers.environment.update_env: { exc_str } "
202
- )
188
+ logging .error (f"controllers.environment.update_env: { exc_str } " )
203
189
raise HTTPException (
204
190
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
205
191
detail = f"Failed to update environment: { e } " ,
206
192
) from e
207
193
else :
208
- return EnvUpdated (new_env_id = env_repo .env_id )
194
+ return EnvUpdated (new_env_id = updated_env .env_id )
209
195
finally :
210
196
logging .info (
211
- f"[ { datetime . now () } ] Call to controllers.environment.update_env completed; params: EnvID { env_id } , Env { hash (self .env )} "
197
+ f"Call to controllers.environment.update_env completed; params: EnvID { env_id } , Env { hash (self .env )} "
212
198
)
213
199
214
200
@staticmethod
@@ -225,14 +211,11 @@ async def delete_env(env_id: str) -> "Union[EnvDeleted, HTTPException]":
225
211
Raises:
226
212
HTTP 404 Not Found: If the env is not found in the database.
227
213
"""
228
- env_repo = EnvRepository (env_id = env_id )
229
214
try :
230
- await env_repo .delete_env ()
215
+ await EnvRepository ( env_id = env_id ) .delete_env ()
231
216
except Exception as e :
232
217
exc_str = parse_error (e )
233
- logging .error (
234
- f"[{ datetime .now ()} ] controllers.environment.delete_env: { exc_str } "
235
- )
218
+ logging .error (f"controllers.environment.delete_env: { exc_str } " )
236
219
raise HTTPException (
237
220
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
238
221
detail = f"Failed to delete environment: { e } " ,
@@ -241,7 +224,7 @@ async def delete_env(env_id: str) -> "Union[EnvDeleted, HTTPException]":
241
224
return EnvDeleted (deleted_env_id = env_id )
242
225
finally :
243
226
logging .info (
244
- f"[ { datetime . now () } ] Call to controllers.environment.delete_env completed; params: EnvID { env_id } "
227
+ f"Call to controllers.environment.delete_env completed; params: EnvID { env_id } "
245
228
)
246
229
247
230
@classmethod
@@ -258,9 +241,9 @@ async def simulate(cls, env_id: int) -> "Union[EnvSummary, HTTPException]":
258
241
Raises:
259
242
HTTP 404 Not Found: If the env does not exist in the database.
260
243
"""
261
- read_env = await cls .get_env_by_id (env_id )
262
244
try :
263
- rocketpy_env = cls .get_rocketpy_env (read_env )
245
+ read_env = await cls .get_env_by_id (env_id )
246
+ rocketpy_env = await cls .get_rocketpy_env (read_env )
264
247
env_simulation_numbers = EnvData .parse_obj (
265
248
rocketpy_env .all_info_returned ()
266
249
)
@@ -270,11 +253,11 @@ async def simulate(cls, env_id: int) -> "Union[EnvSummary, HTTPException]":
270
253
env_summary = EnvSummary (
271
254
env_data = env_simulation_numbers , env_plots = env_simulation_plots
272
255
)
256
+ except HTTPException as e :
257
+ raise e from e
273
258
except Exception as e :
274
259
exc_str = parse_error (e )
275
- logging .error (
276
- f"[{ datetime .now ()} ] controllers.environment.simulate: { exc_str } "
277
- )
260
+ logging .error (f"controllers.environment.simulate: { exc_str } " )
278
261
raise HTTPException (
279
262
status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
280
263
detail = f"Failed to simulate environment: { e } " ,
@@ -283,5 +266,5 @@ async def simulate(cls, env_id: int) -> "Union[EnvSummary, HTTPException]":
283
266
return env_summary
284
267
finally :
285
268
logging .info (
286
- f"[ { datetime . now () } ] Call to controllers.environment.simulate completed; params: EnvID { env_id } "
269
+ f"Call to controllers.environment.simulate completed; params: EnvID { env_id } "
287
270
)
0 commit comments