fgo-ta-com-website/src/content/config.ts

40 lines
837 B
TypeScript
Raw Normal View History

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({
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
}