-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontent.config.ts
More file actions
58 lines (54 loc) · 1.57 KB
/
content.config.ts
File metadata and controls
58 lines (54 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { defineCollection, defineContentConfig, z } from '@nuxt/content';
// 1. Esquema base reutilizável
const pageSchema = z.object({
title: z.string().optional(),
date: z.string(),
dateFormatted: z.string(),
image: z.string().optional(),
path: z.string().optional()
})
// 2. Esquema estendido para o blog
const blogSchema = pageSchema.extend({
dateFormatted: z.string(),
categories: z.array(z.string()).optional(),
slugified_categories: z.array(z.string()).optional(),
published: z.boolean().optional(),
author: z.string().optional(),
mathfont: z.boolean().optional()
})
// Esquema para podcasts
const podcastSchema = pageSchema.extend({
description: z.string(),
audioSrc: z.string(),
duration: z.string().optional(),
sourceName: z.string().optional(),
sourceUrl: z.string().url().optional(),
published: z.boolean().optional(),
categories: z.array(z.string()).optional(),
slugified_categories: z.array(z.string()).optional()
});
// 3. Configuração final
export default defineContentConfig({
collections: {
home: defineCollection({
type: 'page',
source: 'index.md',
schema: pageSchema // <-- Usa o esquema base
}),
blog: defineCollection({
type: 'page',
source: 'blog/**/*.md',
schema: blogSchema // <-- Usa o esquema estendido
}),
podcasts: defineCollection({
type: 'page',
source: 'podcast/**/*.md',
schema: podcastSchema
}),
sobre: defineCollection({
type: 'page',
source: 'sobre.md',
schema: pageSchema // <-- Usa o esquema base novamente
})
}
})