fix: ajouter la gestion des erreurs 404 pour les données manquantes dans les endpoints API

This commit is contained in:
2025-12-16 16:17:53 +01:00
parent 95ccb1c8ce
commit 629f917af8
10 changed files with 67 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
export default defineNuxtConfig({ export default defineNuxtConfig({
modules: ["nitro-cloudflare-dev"], modules: ['nitro-cloudflare-dev'],
devtools: { devtools: {
enabled: true, enabled: true,
@@ -37,7 +37,7 @@ export default defineNuxtConfig({
openAPI: true openAPI: true
}, },
preset: "cloudflare_module", preset: 'cloudflare_module',
cloudflare: { cloudflare: {
deployConfig: true, deployConfig: true,
@@ -47,7 +47,10 @@ export default defineNuxtConfig({
hub: { hub: {
cache: true, cache: true,
db: 'sqlite' db: {
driver: 'd1',
dialect: 'sqlite'
}
}, },
eslint: { eslint: {
@@ -73,4 +76,4 @@ export default defineNuxtConfig({
branch: 'master' branch: 'master'
} }
} }
}) })

View File

@@ -1,8 +1,14 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'contact') const result = await queryCollection(event, 'contact')
.where('extension', '=', 'json') .where('extension', '=', 'json')
.first() .first()
if (!result) {
throw createError({ statusCode: 404, statusMessage: 'Contact information not found' })
}
return result.body return result.body
}, { }, {
maxAge: 60 * 60 * 24, maxAge: 60 * 60 * 24,

View File

@@ -1,11 +1,17 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'education') const result = await queryCollection(event, 'education')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.all() .all()
if (result.length === 0) {
throw createError({ statusCode: 404, statusMessage: 'Education records not found' })
}
return result 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((edu) => ({ .map(edu => ({
degree: edu.meta.degree, degree: edu.meta.degree,
institution: edu.meta.institution, institution: edu.meta.institution,
startDate: edu.meta.startDate, startDate: edu.meta.startDate,

View File

@@ -1,10 +1,16 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'experiences') const result = await queryCollection(event, 'experiences')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.all() .all()
if (result.length === 0) {
throw createError({ statusCode: 404, statusMessage: 'Experience records not found' })
}
return result 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 => ({ .map(exp => ({
title: exp.meta.title, title: exp.meta.title,
company: exp.meta.company, company: exp.meta.company,

View File

@@ -1,7 +1,12 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'hobbies') const result = await queryCollection(event, 'hobbies')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.first() .first()
if (!result) {
throw createError({ statusCode: 404, statusMessage: 'Hobbies not found' })
}
return result.body return result.body
}, { }, {

View File

@@ -1,8 +1,14 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'languages') const result = await queryCollection(event, 'languages')
.where('extension', '=', 'json') .where('extension', '=', 'json')
.first() .first()
if (!result) {
throw createError({ statusCode: 404, statusMessage: 'Languages not found' })
}
return result.body return result.body
}, { }, {
maxAge: 60 * 60 * 24, maxAge: 60 * 60 * 24,

View File

@@ -1,8 +1,14 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'profile') const result = await queryCollection(event, 'profile')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.first() .first()
if (!result) {
throw createError({ statusCode: 404, statusMessage: 'Profile not found' })
}
return result return result
}, { }, {
maxAge: 60 * 60 * 24, maxAge: 60 * 60 * 24,

View File

@@ -1,8 +1,14 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'projects') const result = await queryCollection(event, 'projects')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.all() .all()
if (result.length === 0) {
throw createError({ statusCode: 404, statusMessage: 'Projects not found' })
}
return result return result
}, { }, {
maxAge: 60 * 60 * 24, maxAge: 60 * 60 * 24,

View File

@@ -1,8 +1,14 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const result = await queryCollection(event, 'skills') const result = await queryCollection(event, 'skills')
.where('extension', '=', 'json') .where('extension', '=', 'json')
.first() .first()
if (!result) {
throw createError({ statusCode: 404, statusMessage: 'Skills not found' })
}
return result.body return result.body
}, { }, {
maxAge: 60 * 60 * 24, maxAge: 60 * 60 * 24,

View File

@@ -1,12 +1,22 @@
import { queryCollection } from '@nuxt/content/server'
export default defineCachedEventHandler(async (event) => { export default defineCachedEventHandler(async (event) => {
const categories = await queryCollection(event, 'usesCategories') const categories = await queryCollection(event, 'usesCategories')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.all() .all()
if (categories.length === 0) {
throw createError({ statusCode: 404, statusMessage: 'Uses categories not found' })
}
const uses = await queryCollection(event, 'uses') const uses = await queryCollection(event, 'uses')
.where('extension', '=', 'md') .where('extension', '=', 'md')
.all() .all()
if (uses.length === 0) {
throw createError({ statusCode: 404, statusMessage: 'Uses not found' })
}
const uses_by_categories = [] const uses_by_categories = []
for (const category of categories) { for (const category of categories) {
uses_by_categories.push({ uses_by_categories.push({