import * as v from "valibot";
const scheduleSchema = v.object({
id: v.nullable(v.string()),
revision_id: v.optional(v.nullable(v.string())),
created: v.nullable(v.number()),
updated: v.nullable(v.number()),
name: v.nullable(v.string()),
lessons: v.nullable(
v.array(
v.object({
id: v.string(),
name: v.string(),
description: v.string(),
pages: v.array(v.object({})),
owner: v.string(),
track: v.string(),
audit: v.object({
available_at: v.nullable(v.number()),
completed_at: v.nullable(v.number()),
first_viewed_at: v.nullable(v.number()),
times_viewed: v.nullable(v.number()),
last_notified: v.nullable(v.number()),
}),
}),
),
),
owner: v.string(),
});
export default defineEventHandler(async (event) => {
const query = getQuery(event);
const response = await api<{ schema: unknown }>(
event,
`${event.path.replace(/^\/api/, "")}`,
{
method: event.method,
params: {
type: query.path,
},
},
);
try {
return v.parse(scheduleSchema, response);
} catch (e) {
console.error(e);
return {};
}
});
import * as v from "valibot";
const scheduleSchema = v.object({
id: v.nullable(v.string()),
revision_id: v.optional(v.nullable(v.string())),
created: v.nullable(v.number()),
updated: v.nullable(v.number()),
name: v.nullable(v.string()),
lessons: v.nullable(
v.array(
v.object({
id: v.string(),
name: v.string(),
description: v.string(),
pages: v.array(v.object({})),
owner: v.string(),
track: v.string(),
audit: v.object({
available_at: v.nullable(v.number()),
completed_at: v.nullable(v.number()),
first_viewed_at: v.nullable(v.number()),
times_viewed: v.nullable(v.number()),
last_notified: v.nullable(v.number()),
}),
}),
),
),
owner: v.string(),
});
export default defineEventHandler(async (event) => {
const query = getQuery(event);
const response = await api<{ schema: unknown }>(
event,
`${event.path.replace(/^\/api/, "")}`,
{
method: event.method,
params: {
type: query.path,
},
},
);
try {
return v.parse(scheduleSchema, response);
} catch (e) {
console.error(e);
return {};
}
});