Leia atentamente todo o teste antes de iniciá-lo, afim de evitar erros.
Você terá até 3h30min para finalizar este teste a partir do momento em que recebê-lo. Caso não consiga finalizar o teste por completo, envie o projeto assim mesmo. Testes enviados após o tempo estipulado não serão aceitos!
Você dever criar uma API (api_name = struct_data
) que retornará através de um método GET, um JSON nessa estrutura:
{
"product_url__image":"<https://cdn.shopify.com/s/files/1/1602/2781/products/AllSwatches_Render-188588.jpg?v=1605714948>",
"product_url":"<https://baebrow.com/products/baebrow-instant-tint-graphite>",
"product_url__created_at":"2019-06-26",
"total_sales":"118",
"2020-11-14":"21",
"2020-11-13":"32",
"2020-11-12":"25",
"2020-11-11":"40"
}
Essa API (api_name = raw_data
) consumirá os dados do seguinte endpoint: https://mc3nt37jj5.execute-api.sa-east-1.amazonaws.com/default/hourth_desafio
Abaixo temos o exemplo de 1 item do endpoint acima:
{
"product_url__image":"<https://cdn.shopify.com/s/files/1/1602/2781/products/AllSwatches_Render-188588.jpg?v=1605714948>",
"product_url":"<https://baebrow.com/products/baebrow-instant-tint-graphite>",
"product_url__created_at":"2019-06-26",
"consult_date":"2021-02-11",
"vendas_no_dia":6
}
product_url
) e:
consult_date
em chaves dentro do jsonvendas_no_dia
(de cada um dos dias) e atribuir esse valor somado à chave total_sales
raw_data
)[
{
"product_url__image":"<https://cdn.shopify.com/s/files/1/1602/2781/products/AllSwatches_Render-188588.jpg?v=1605714948>",
"product_url":"<https://baebrow.com/products/baebrow-instant-tint-graphite>",
"product_url__created_at":"2019-06-26",
"consult_date":"2021-02-11",
"vendas_no_dia":6
},
{
"product_url__image": "<https://cdn.shopify.com/s/files/1/1602/2781/products/AllSwatches_Render-188588.jpg?v=1605714948>",
"product_url": "<https://baebrow.com/products/baebrow-instant-tint-graphite>",
"product_url__created_at": "2019-06-26",
"consult_date": "2021-02-13",
"vendas_no_dia":12
}
]
struct_data
){
"product_url__image":"<https://cdn.shopify.com/s/files/1/1602/2781/products/AllSwatches_Render-188588.jpg?v=1605714948>",
"product_url":"<https://baebrow.com/products/baebrow-instant-tint-graphite>",
"product_url__created_at":"2019-06-26",
"total_sales":"18",
"2020-11-13":"12",
"2020-11-12":"0"
"2020-11-11":"6"
}
raw_data
.
O range de data vai filtrar os itens do json em que a chave consult_date
seja maior ou igual a init_date e menor ou igual a finish_date.
Caso os parâmetros de init_date e finish_date NÃO sejam fornecidos ao se acionar o método GET, o filtro NÃO deverá ser aplicado
Caso entre a data inicial (init_date) e a data final (finish_date) exista um ou mais dias SEM vendas OU SEM representação no JSON de entrada struct_data
, estes devem constar mesmo assim no JSON de saída, apresentando aquele dia com valor (número de vendas) igual a 0.
No Exemplo: (Saída) struct_data
acima. Supondo um filtro com data inicial (init_date) em 2020-11-11
e data final (finish_date) em 2020-11-13
, em que NÃO houve registro de vendas no dia 2020-11-12
, mesmo assim este é apresentado, mas com valor igual a 0.