From f750b79aeb8d64abcc76e34d3de8c135703049d8 Mon Sep 17 00:00:00 2001 From: Jadon Clugston <34165782+jClugstor@users.noreply.github.com> Date: Tue, 24 Sep 2024 17:34:17 -0400 Subject: [PATCH] Error message for failing to create model in model-equation endpoint (#173) --- src/SimulationService.jl | 20 +++++++++++--------- src/operations.jl | 14 +++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/SimulationService.jl b/src/SimulationService.jl index 6f6e84d..a73a2e6 100644 --- a/src/SimulationService.jl +++ b/src/SimulationService.jl @@ -128,9 +128,7 @@ function start!(; host=HOST[], port=PORT[], kw...) JobSchedulers.set_scheduler(max_cpu=JobSchedulers.SCHEDULER_MAX_CPU, max_mem=0.5, update_second=0.05, max_job=5000) Oxygen.resetstate() - - Oxygen.@get "/model-equation/{id}" modelEquation - Oxygen.@post "/model-equation" modelToEquation + Oxygen.@get "/model-equation/{id}" model_equation Oxygen.@get "/health" health Oxygen.@get "/status/{id}" job_status @@ -220,17 +218,21 @@ function job_kill(::HTTP.Request, id::String) end # GET /model-equation/{id} -function modelEquation(::HTTP.Request, id::String) +function model_equation(::HTTP.Request, id::String) @assert ENABLE_TDS[] tds_url = "$(TDS_URL[])/models/$id" model_json = JSON3.read(HTTP.get(tds_url, [basic_auth_header[], json_content_header, snake_case_header]).body) - sys = amr_get(model_json, ODESystem) - model_latex = latexify(sys) - return Dict([ - (:latex, model_latex.s) - ]) + try + sys = amr_get(model_json, ODESystem) + + model_latex = latexify(sys) + catch ex + error_string = sprint(showerror,ex) + return HTTP.Response(500, "/model-equation failure. Server error: $error_string") + end + return Dict([(:latex, model_latex.s)]) end # POST /model-equation diff --git a/src/operations.jl b/src/operations.jl index fba0f16..3aab72e 100644 --- a/src/operations.jl +++ b/src/operations.jl @@ -7,14 +7,14 @@ # Get `ModelingToolkit.ODESystem` from AMR function amr_get(amr::JSON3.Object,::Type{ODESystem}) - schema_url = amr.header.schema - if contains(schema_url,"petrinet_schema") + schema_url = amr.header.schema + if contains(schema_url,"petrinet_schema") return amr_get_petrinet(amr) - elseif contains(schema_url, "stockflow_schema") - return amr_get_stockflow(amr) - elseif contains(schema_url,"regnet_schema") - return amr_get_regnet(amr) - end + elseif contains(schema_url, "stockflow_schema") + return amr_get_stockflow(amr) + elseif contains(schema_url,"regnet_schema") + return amr_get_regnet(amr) + end end function amr_get_stockflow(amr::JSON3.Object)