storipress/karbon

View on GitHub
packages/karbon/src/runtime/api/schema/typesense-article.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { z } from 'zod'

export const MetaSchema = z.object({
  id: z.number(),
  name: z.string(),
  slug: z.string(),
})
export type Desk = z.infer<typeof MetaSchema>

export const AuthorSchema = z.object({
  avatar: z.string(),
  bio: z.string().optional(),
  full_name: z.string(),
  id: z.number(),
  location: z.string().optional(),
  slug: z.string(),
  socials: z.string().optional(),
})
export type Author = z.infer<typeof AuthorSchema>

export const ArticleSchema = z.object({
  authors: z.array(AuthorSchema),
  blurb: z.string().optional(),
  cover: z.string().optional(),
  desk: MetaSchema,
  featured: z.boolean(),
  id: z.string(),
  order: z.number(),
  pathnames: z.array(z.string()).optional(),
  plan: z.string(),
  published_at: z.number(),
  seo: z.string().optional(),
  slug: z.string(),
  tags: z.array(MetaSchema).optional(),
  title: z.string(),
  updated_at: z.number(),
  content: z.string().optional(),
})
export type Article = z.infer<typeof ArticleSchema>