import { z, defineCollection } from 'astro:content'

// Una notizia ha una data di pubblicazione ma non ha un autore in quanto sono
// notizie generiche sul PHC e non sono scritte da un autore specifico
const newsCollection = defineCollection({
    type: 'content',
    schema: z.object({
        title: z.string(),
        description: z.string(),
        publishDate: z.date(),
        image: z
            .object({
                url: z.string(),
                alt: z.string(),
            })
            .optional(),
    }),
})

// Una guida ha un autore ma non ha una data di pubblicazione in quanto è un
// contenuto statico e non è importante sapere quando è stata pubblicata
const guidesCollection = defineCollection({
    type: 'content',
    schema: z.object({
        id: z.string(),
        title: z.string(),
        description: z.string(),
        series: z.string().optional(),
        tags: z.array(z.string()),
    }),
})

// Per ora sono su un sito a parte ma prima o poi verranno migrati qui
const seminariettiCollection = defineCollection({
    type: 'content',
    schema: z.object({
        title: z.string(),
        description: z.string(),
        author: z.string(),
        publishDate: z.date(),
        eventDate: z.date(),
        tags: z.array(z.string()),
    }),
})

// Export a single `collections` object to register your collection(s)
export const collections = {
    news: newsCollection,
    guides: guidesCollection,
    seminarietti: seminariettiCollection,
}
