-
Notifications
You must be signed in to change notification settings - Fork 0
server.tj
Mike B! edited this page Jul 27, 2021
·
3 revisions
this file defines the routes, it basically maps routes to generic handlers. This is done in a way to allow basic CRUD requests to be added without new js files, yet still have more complex transactions be done with custom code.
<server>{
"port":8420,
"routes":[
{
"method":"post",
"path":"/ingredient",
"handler":<async_chain>{
"steps": [
<dml_step>{
"pool":<global>"db_pool",
"schema":<flat_schema>[
{
"name":"name",
"type":"string"
},
{
"name":"serving_size",
"type":"number"
},
{
"name":"calories",
"type":"number"
},
{
"name":"protien",
"type":"number"
},
{
"name":"carbs",
"type":"number"
},
{
"name":"fat",
"type":"number"
}
],
"table":"food_item",
"fields":["name","serving_size_grams","calories","protien","carbs","fat"]
}
]
}
},
{
"method":"post",
"path":"/meal",
"handler":<async_chain>{
"steps": [
<req>{
"path":"./lib/log_meal.js",
"dependencies":{
"logger":<con_logger>,
"pg_pool":<global>"db_pool",
"meal_field":"meal",
"components_field":"components",
"meal_schema":<flat_schema>[
{
"name":"name",
"type":"string"
}
],
"component_schema":<flat_schema>[
{
"name":"food_id",
"type":"string"
},
{
"name":"servings",
"type":"number"
}
]
}
}
]
}
},
{
"method":"get",
"path":"/meals_by_date",
"handler":<async_chain>{
"steps":[
<query_step>{
"pool":<global>"db_pool",
"param_extractor":<param_extractor>[
{
"name":"start_date",
"source":"query",
"type":"number"
},
{
"name":"end_date",
"source":"query",
"type":"number"
}
],
"query":"SELECT meal.id,meal.name,to_char(meal.date,'MM/DD HH:MI') as date, json_agg(comp) as ingredients,SUM (comp.calories) as calories,SUM (comp.protien) as protien, SUM (comp.carbs) as carbs,SUM (comp.fat) as fat FROM full_component AS comp JOIN meal on comp.meal_id = meal.id WHERE meal.date >= to_timestamp($1) and meal.date <= to_timestamp($2) GROUP BY meal.id ORDER BY meal.date asc"
}
]
}
},
{
"method":"get",
"path":"/ingredients",
"handler":<async_chain>{
"steps":[
<query_step>{
"pool":<global>"db_pool",
"query":"SELECT * FROM food_item"
}
]
}
},
{
"method":"get",
"path":"/:file",
"handler":<static_handler>{
"root":"./dist",
"cache":false
}
}
]
}