Skip to content

Commit 0293efb

Browse files
Merge pull request #20 from Programador-jr/api/update
Localized error messages and improvements for the Exercise API
2 parents a6e9dd3 + 2e51ba6 commit 0293efb

File tree

1 file changed

+55
-10
lines changed

1 file changed

+55
-10
lines changed

api/exerciseRoutes.js

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,30 @@ const fuseOptions = {
99
keys: ["name.en", "name.pt"], // Busca em ambos os idiomas
1010
};
1111

12+
// Mensagens de erro localizadas
13+
const errorMessages = {
14+
invalidLang: {
15+
en: "Invalid language. Use 'en' or 'pt'.",
16+
pt: "Idioma inválido. Use 'en' ou 'pt'.",
17+
},
18+
missingQuery: {
19+
en: "Please provide a search term.",
20+
pt: "Por favor, insira um termo de pesquisa.",
21+
},
22+
noResults: {
23+
en: "Exercise not found.",
24+
pt: "Exercício não encontrado.",
25+
},
26+
fetchError: {
27+
en: "Error fetching exercises.",
28+
pt: "Erro ao buscar os exercícios.",
29+
},
30+
searchError: {
31+
en: "Error searching exercises.",
32+
pt: "Erro ao buscar exercícios.",
33+
},
34+
};
35+
1236
// Rota para obter exercícios paginados em um idioma específico
1337
router.get("/", async (req, res) => {
1438
try {
@@ -17,7 +41,9 @@ router.get("/", async (req, res) => {
1741
const lang = req.query.lang || "en"; // Idioma padrão é inglês
1842

1943
if (!["en", "pt"].includes(lang)) {
20-
return res.status(400).json({ message: "Idioma inválido. Use 'en' ou 'pt'." });
44+
return res
45+
.status(400)
46+
.json({ message: errorMessages.invalidLang[lang] || errorMessages.invalidLang.en });
2147
}
2248

2349
const exercises = await Exercise.find()
@@ -43,8 +69,15 @@ router.get("/", async (req, res) => {
4369

4470
res.json(formattedExercises);
4571
} catch (err) {
46-
console.error("Erro ao buscar exercícios:", err);
47-
res.status(500).json({ message: "Erro ao buscar os exercícios", error: err.message });
72+
console.error(
73+
lang === "pt"
74+
? `${errorMessages.fetchError.pt}: ${err.message}`
75+
: `${errorMessages.fetchError.en}: ${err.message}`
76+
);
77+
res.status(500).json({
78+
message: errorMessages.fetchError[lang] || errorMessages.fetchError.en,
79+
error: err.message,
80+
});
4881
}
4982
});
5083

@@ -53,11 +86,15 @@ router.get("/search", async (req, res) => {
5386
const { query, lang = "en" } = req.query;
5487

5588
if (!["en", "pt"].includes(lang)) {
56-
return res.status(400).json({ message: "Idioma inválido. Use 'en' ou 'pt'." });
89+
return res
90+
.status(400)
91+
.json({ message: errorMessages.invalidLang[lang] || errorMessages.invalidLang.en });
5792
}
5893

5994
if (!query) {
60-
return res.status(400).json({ message: "Por favor, insira um termo de pesquisa" });
95+
return res
96+
.status(400)
97+
.json({ message: errorMessages.missingQuery[lang] || errorMessages.missingQuery.en });
6198
}
6299

63100
try {
@@ -91,16 +128,24 @@ router.get("/search", async (req, res) => {
91128
id: exercise.id,
92129
};
93130
});
94-
95-
res.json(formattedExercises);
96131

132+
// Se nenhum exercício foi encontrado
97133
if (matchedExercises.length === 0) {
98-
return res.json({ message: "Exercício não encontrado." });
134+
return res.json({ message: errorMessages.noResults[lang] || errorMessages.noResults.en });
99135
}
100136

101-
res.json({ message: "Exercícios encontrados:", exercises: matchedExercises });
137+
// Retornar os exercícios encontrados
138+
res.json({ message: "Exercises found:", exercises: matchedExercises });
102139
} catch (err) {
103-
res.status(500).json({ message: "Erro ao buscar exercícios", error: err.message });
140+
console.error(
141+
lang === "pt"
142+
? `${errorMessages.searchError.pt}: ${err.message}`
143+
: `${errorMessages.searchError.en}: ${err.message}`
144+
);
145+
res.status(500).json({
146+
message: errorMessages.searchError[lang] || errorMessages.searchError.en,
147+
error: err.message,
148+
});
104149
}
105150
});
106151

0 commit comments

Comments
 (0)