From 629f917af8e810ea154e4a22afd6c8b66681449d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 16 Dec 2025 16:17:53 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20ajouter=20la=20gestion=20des=20erreurs?= =?UTF-8?q?=20404=20pour=20les=20donn=C3=A9es=20manquantes=20dans=20les=20?= =?UTF-8?q?endpoints=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nuxt.config.ts | 11 +++++++---- server/api/contact.get.ts | 6 ++++++ server/api/education.get.ts | 10 ++++++++-- server/api/experiences.get.ts | 8 +++++++- server/api/hobbies.get.ts | 5 +++++ server/api/languages.get.ts | 6 ++++++ server/api/profile.get.ts | 6 ++++++ server/api/projects.get.ts | 6 ++++++ server/api/skills.get.ts | 6 ++++++ server/api/uses.get.ts | 10 ++++++++++ 10 files changed, 67 insertions(+), 7 deletions(-) diff --git a/nuxt.config.ts b/nuxt.config.ts index 512050b..b5bda82 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,6 +1,6 @@ export default defineNuxtConfig({ - modules: ["nitro-cloudflare-dev"], + modules: ['nitro-cloudflare-dev'], devtools: { enabled: true, @@ -37,7 +37,7 @@ export default defineNuxtConfig({ openAPI: true }, - preset: "cloudflare_module", + preset: 'cloudflare_module', cloudflare: { deployConfig: true, @@ -47,7 +47,10 @@ export default defineNuxtConfig({ hub: { cache: true, - db: 'sqlite' + db: { + driver: 'd1', + dialect: 'sqlite' + } }, eslint: { @@ -73,4 +76,4 @@ export default defineNuxtConfig({ branch: 'master' } } -}) \ No newline at end of file +}) diff --git a/server/api/contact.get.ts b/server/api/contact.get.ts index ae2ae5a..e4546cd 100644 --- a/server/api/contact.get.ts +++ b/server/api/contact.get.ts @@ -1,8 +1,14 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'contact') .where('extension', '=', 'json') .first() + if (!result) { + throw createError({ statusCode: 404, statusMessage: 'Contact information not found' }) + } + return result.body }, { maxAge: 60 * 60 * 24, diff --git a/server/api/education.get.ts b/server/api/education.get.ts index 3d959ae..fc1deac 100644 --- a/server/api/education.get.ts +++ b/server/api/education.get.ts @@ -1,11 +1,17 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'education') .where('extension', '=', 'md') .all() + if (result.length === 0) { + throw createError({ statusCode: 404, statusMessage: 'Education records not found' }) + } + return result - .sort((a, b) => new Date(b.meta.startDate).getTime() - new Date(a.meta.startDate).getTime()) - .map((edu) => ({ + .sort((a, b) => new Date(b.meta.startDate as string).getTime() - new Date(a.meta.startDate as string).getTime()) + .map(edu => ({ degree: edu.meta.degree, institution: edu.meta.institution, startDate: edu.meta.startDate, diff --git a/server/api/experiences.get.ts b/server/api/experiences.get.ts index 1da004d..6e7bdaf 100644 --- a/server/api/experiences.get.ts +++ b/server/api/experiences.get.ts @@ -1,10 +1,16 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'experiences') .where('extension', '=', 'md') .all() + if (result.length === 0) { + throw createError({ statusCode: 404, statusMessage: 'Experience records not found' }) + } + return result - .sort((a, b) => new Date(b.meta.startDate).getTime() - new Date(a.meta.startDate).getTime()) + .sort((a, b) => new Date(b.meta.startDate as string).getTime() - new Date(a.meta.startDate as string).getTime()) .map(exp => ({ title: exp.meta.title, company: exp.meta.company, diff --git a/server/api/hobbies.get.ts b/server/api/hobbies.get.ts index 11b7177..5f03a9b 100644 --- a/server/api/hobbies.get.ts +++ b/server/api/hobbies.get.ts @@ -1,7 +1,12 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'hobbies') .where('extension', '=', 'md') .first() + if (!result) { + throw createError({ statusCode: 404, statusMessage: 'Hobbies not found' }) + } return result.body }, { diff --git a/server/api/languages.get.ts b/server/api/languages.get.ts index 76f9991..b957ab1 100644 --- a/server/api/languages.get.ts +++ b/server/api/languages.get.ts @@ -1,8 +1,14 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'languages') .where('extension', '=', 'json') .first() + if (!result) { + throw createError({ statusCode: 404, statusMessage: 'Languages not found' }) + } + return result.body }, { maxAge: 60 * 60 * 24, diff --git a/server/api/profile.get.ts b/server/api/profile.get.ts index 5d465dd..633053d 100644 --- a/server/api/profile.get.ts +++ b/server/api/profile.get.ts @@ -1,8 +1,14 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'profile') .where('extension', '=', 'md') .first() + if (!result) { + throw createError({ statusCode: 404, statusMessage: 'Profile not found' }) + } + return result }, { maxAge: 60 * 60 * 24, diff --git a/server/api/projects.get.ts b/server/api/projects.get.ts index 87cb7f3..3231a8b 100644 --- a/server/api/projects.get.ts +++ b/server/api/projects.get.ts @@ -1,8 +1,14 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'projects') .where('extension', '=', 'md') .all() + if (result.length === 0) { + throw createError({ statusCode: 404, statusMessage: 'Projects not found' }) + } + return result }, { maxAge: 60 * 60 * 24, diff --git a/server/api/skills.get.ts b/server/api/skills.get.ts index ba33486..e42143c 100644 --- a/server/api/skills.get.ts +++ b/server/api/skills.get.ts @@ -1,8 +1,14 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'skills') .where('extension', '=', 'json') .first() + if (!result) { + throw createError({ statusCode: 404, statusMessage: 'Skills not found' }) + } + return result.body }, { maxAge: 60 * 60 * 24, diff --git a/server/api/uses.get.ts b/server/api/uses.get.ts index 01706d5..fa0dff2 100644 --- a/server/api/uses.get.ts +++ b/server/api/uses.get.ts @@ -1,12 +1,22 @@ +import { queryCollection } from '@nuxt/content/server' + export default defineCachedEventHandler(async (event) => { const categories = await queryCollection(event, 'usesCategories') .where('extension', '=', 'md') .all() + if (categories.length === 0) { + throw createError({ statusCode: 404, statusMessage: 'Uses categories not found' }) + } + const uses = await queryCollection(event, 'uses') .where('extension', '=', 'md') .all() + if (uses.length === 0) { + throw createError({ statusCode: 404, statusMessage: 'Uses not found' }) + } + const uses_by_categories = [] for (const category of categories) { uses_by_categories.push({