2024-01-09 14:30:28 +01:00
|
|
|
import { z, defineCollection } from 'astro:content'
|
|
|
|
|
2024-01-25 21:23:21 +01:00
|
|
|
// Individual TA entries
|
2024-01-25 21:21:45 +01:00
|
|
|
const entry = z.object({
|
2024-01-24 22:22:54 +01:00
|
|
|
title: z.string(),
|
|
|
|
link: z.string().url(),
|
|
|
|
date: z.string().transform((str) => new Date(str)),
|
|
|
|
servant: z.string(),
|
|
|
|
turns: z.string(),
|
|
|
|
runner: z.string(),
|
|
|
|
})
|
|
|
|
|
2024-01-25 21:23:21 +01:00
|
|
|
// Individual quest info block
|
2024-01-25 21:21:45 +01:00
|
|
|
const quest = z.object({
|
|
|
|
questTitle: z.string(),
|
|
|
|
description: z.string(),
|
|
|
|
data: z.array(entry)
|
|
|
|
})
|
|
|
|
|
2024-01-25 21:23:21 +01:00
|
|
|
// Basic info block for page
|
2024-01-25 21:21:45 +01:00
|
|
|
const info = z.object({
|
|
|
|
title: z.string(),
|
|
|
|
releaseDate: z.string().transform((str) => new Date(str)),
|
|
|
|
shortdescription: z.string(),
|
|
|
|
releaseNumber: z.number().default(1),
|
|
|
|
})
|
|
|
|
|
2024-01-25 21:23:21 +01:00
|
|
|
// Combined ta data collection schema
|
2024-01-25 21:21:45 +01:00
|
|
|
const taData = defineCollection({
|
2024-01-09 14:30:28 +01:00
|
|
|
type: 'data',
|
|
|
|
schema: z.object({
|
2024-01-25 21:21:45 +01:00
|
|
|
info: info,
|
|
|
|
quests: z.array(quest),
|
2024-01-09 14:30:28 +01:00
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
|
|
|
export const collections = {
|
2024-01-25 21:21:45 +01:00
|
|
|
taInfoData: taData,
|
2024-01-09 14:30:28 +01:00
|
|
|
}
|