mirror of
https://github.com/KazooTTT/kazoottt-blog-v2.git
synced 2025-06-23 10:41:30 +08:00
fix: add number type parse
This commit is contained in:
@ -5,6 +5,23 @@ function removeDupsAndLowerCase(array: string[]) {
|
|||||||
return [...new Set(array.map((str) => str.toLowerCase()))];
|
return [...new Set(array.map((str) => str.toLowerCase()))];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 辅助函数:处理各种格式的日期
|
||||||
|
function processDate(val: string | number | Date): Date {
|
||||||
|
// 如果是数字(如20250225),转换为字符串并格式化
|
||||||
|
if (typeof val === "number") {
|
||||||
|
const numStr = val.toString();
|
||||||
|
// 假设格式为YYYYMMDD
|
||||||
|
if (numStr.length === 8) {
|
||||||
|
const year = numStr.substring(0, 4);
|
||||||
|
const month = numStr.substring(4, 6);
|
||||||
|
const day = numStr.substring(6, 8);
|
||||||
|
return new Date(`${year}-${month}-${day}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 其他情况直接使用Date构造函数
|
||||||
|
return new Date(val);
|
||||||
|
}
|
||||||
|
|
||||||
const baseSchema = z.object({
|
const baseSchema = z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
});
|
});
|
||||||
@ -17,9 +34,15 @@ const post = defineCollection({
|
|||||||
draft: z.boolean().default(false),
|
draft: z.boolean().default(false),
|
||||||
banner: z.string().optional(),
|
banner: z.string().optional(),
|
||||||
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
|
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
|
||||||
date: z.union([z.string(), z.date()]).transform((val) => new Date(val)),
|
date: z.union([z.string(), z.number(), z.date()]).transform(processDate),
|
||||||
date_modified: z.date().optional(),
|
date_modified: z
|
||||||
data_created: z.date().optional(),
|
.union([z.string(), z.number(), z.date()])
|
||||||
|
.optional()
|
||||||
|
.transform((val) => (val ? processDate(val) : undefined)),
|
||||||
|
data_created: z
|
||||||
|
.union([z.string(), z.number(), z.date()])
|
||||||
|
.optional()
|
||||||
|
.transform((val) => (val ? processDate(val) : undefined)),
|
||||||
category: z.string().optional().nullable(),
|
category: z.string().optional().nullable(),
|
||||||
fixedToTop: z.boolean().optional().default(false),
|
fixedToTop: z.boolean().optional().default(false),
|
||||||
}),
|
}),
|
||||||
@ -29,9 +52,15 @@ const note = defineCollection({
|
|||||||
loader: glob({ base: "./src/content/note", pattern: "**/*.{md,mdx}" }),
|
loader: glob({ base: "./src/content/note", pattern: "**/*.{md,mdx}" }),
|
||||||
schema: baseSchema.extend({
|
schema: baseSchema.extend({
|
||||||
description: z.string().optional().nullable(),
|
description: z.string().optional().nullable(),
|
||||||
date: z.union([z.string(), z.date()]).transform((val) => new Date(val)),
|
date: z.union([z.string(), z.number(), z.date()]).transform(processDate),
|
||||||
date_modified: z.date().optional(),
|
date_modified: z
|
||||||
data_created: z.date().optional(),
|
.union([z.string(), z.number(), z.date()])
|
||||||
|
.optional()
|
||||||
|
.transform((val) => (val ? processDate(val) : undefined)),
|
||||||
|
data_created: z
|
||||||
|
.union([z.string(), z.number(), z.date()])
|
||||||
|
.optional()
|
||||||
|
.transform((val) => (val ? processDate(val) : undefined)),
|
||||||
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
|
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user