28 lines
658 B
TypeScript
28 lines
658 B
TypeScript
import { z, defineCollection } from 'astro:content';
|
|
|
|
const blog = defineCollection({
|
|
schema: {
|
|
title: z.string(),
|
|
description: z.string().optional(),
|
|
image: z.string().optional(),
|
|
|
|
canonical: z.string().url().optional(),
|
|
permalink: z.string().optional(),
|
|
|
|
publishDate: z.date().or(z.string()).optional(),
|
|
draft: z.boolean().optional(),
|
|
|
|
excerpt: z.string().optional(),
|
|
category: z.string().optional(),
|
|
tags: z.array(z.string()).optional(),
|
|
author: z.string().optional(),
|
|
},
|
|
slug: ({ defaultSlug, data }) => {
|
|
return data.permalink || defaultSlug;
|
|
},
|
|
});
|
|
|
|
export const collections = {
|
|
blog: blog,
|
|
};
|