Raw object to validate.
Validated KenmeiManga or null if invalid.
export function extractKenmeiManga(raw: unknown): KenmeiManga | null {
if (typeof raw !== "object" || raw === null) return null;
const obj = raw as Record<string, unknown>;
if (
(typeof obj.id !== "string" && typeof obj.id !== "number") ||
typeof obj.title !== "string"
) {
return null;
}
return {
id: obj.id,
title: obj.title,
status: pickStringFromRecord(obj, "status") ?? "",
score: pickNumberFromRecord(obj, "score") ?? 0,
chaptersRead:
pickNumberFromRecord(obj, "chaptersRead", "chapters_read") ?? 0,
volumesRead: pickNumberFromRecord(obj, "volumesRead", "volumes_read") ?? 0,
notes: pickStringFromRecord(obj, "notes") ?? "",
createdAt: pickStringFromRecord(obj, "createdAt", "created_at") ?? "",
updatedAt: pickStringFromRecord(obj, "updatedAt", "updated_at") ?? "",
lastReadAt: pickStringFromRecord(obj, "lastReadAt", "last_read_at"),
};
}
Validates and extracts kenmeiManga from raw object; returns null if required fields missing.