import { defineContentConfig, defineCollection, z } from "@nuxt/content";
import { asSeoCollection } from "@nuxtjs/seo/content";

export default defineContentConfig({
  collections: {
    // 活动集合
    events: defineCollection({
      type: "page",
      source: "events/*.md",
      schema: z.object({
        title: z.string(),
        subtitle: z.string(),
        date: z.coerce.date(),
        location: z.string(),
        cover: z.string().url(),
        draft: z.boolean().optional().default(false),
      }),
    }),
    // 新闻集合
    news: defineCollection(
      asSeoCollection({
        type: "page",
        source: "news/*.md",
        schema: z.object({
          title: z.string(),
          date: z.coerce.date(),
          updated: z.coerce.date().optional(),
          author: z.string(),
          description: z.string(),
          cover: z.string().optional(),
          tags: z.array(z.string()).optional(),
          category: z.enum(["活动", "通知", "招聘", "博客"]).optional(),
          highlight: z.boolean().optional(),
          seoTitle: z.string().optional(),
          seoDescription: z.string().optional(),
          ogImage: z.string().optional(),
          draft: z.boolean().optional().default(false),
        }),
      })
    ),
    // 名人堂
    hallOfFames: defineCollection({
      type: "page",
      source: "hall-of-fames/*.md",
      schema: z.object({
        name: z.string(),
        photo: z.string().url(),
        title: z.string(),
        description: z.string(),
        gallery: z.array(z.string()),
      }),
    }),
    // 会员名册
    members: defineCollection({
      type: "data",
      source: "members/members.csv",
      schema: z.object({
        // id: z.number(),
        // chinese_name: z.string(),
        // english_name: z.string(),
        // ic: z.string(),
        // mobile: z.string(),
        // home: z.string(),
        // email: z.string(),
        // graduate_level: z.string(),
        // graduate_year: z.string(),
        // marriage_status: z.string(),
        // living_country: z.string(),
        // address_line_1: z.string(),
        // address_line_2: z.string(),
        // address_line_3: z.string(),
        // joined_year: z.string(),
        // receipt_number: z.string(),
      }),
    }),
  },
});
