oscklmO
Convex Community3y ago
3 replies
oscklm

Advice on my schema size, nesting.

Hello,

In terms of the limits stated in the docs - i would love to ask if there are any "danger signs" with this schemas size and its nesting?

Thanks a lot in advance!

export const videoSchema = {
  userId: v.id('users'),
  snippet: v.optional(
    v.object({
      title: v.optional(v.string()),
      description: v.optional(v.string()),
      thumbnails: v.optional(
        v.array(
          v.object({
            id: v.string(),
            url: v.string(),
            width: v.number(),
            height: v.number(),
          })
        )
      ),
    })
  ),
  tags: v.optional(v.string()),
  category: v.optional(v.string()),
  status: v.object({
    uploadStatus: v.union(
      v.literal('uploading'),
      v.literal('processing'),
      v.literal('ready')
    ),
    privacyStatus: v.union(
      v.literal('public'),
      v.literal('private'),
      v.literal('unlisted')
    ),
    publishAt: v.optional(v.number()),
  }),
  statistics: v.optional(
    v.object({
      likeCount: v.optional(v.number()),
      favoriteCount: v.optional(v.number()),
      commentCount: v.optional(v.number()),
      views: v.optional(v.number()),
    })
  ),
  funfact: v.optional(
    v.object({
      thumbnailId: v.id('_storage'),
      description: v.optional(v.string()),
    })
  ),
  suggestions: v.optional(v.array(v.string())),
  activity: v.optional(
    v.object({
      type: v.union(
        v.literal('quiz'),
        v.literal('challenge'),
        v.literal('tutorial')
      ),
      id: v.string(),
    })
  ),
  muxUploadId: v.optional(v.string()),
  metaData: v.optional(
    v.object({
      playbackId: v.optional(v.string()),
      aspectRatio: v.optional(v.string()),
      maxWidth: v.optional(v.number()),
      maxHeight: v.optional(v.number()),
      maxFrameRate: v.optional(v.number()),
      duration: v.optional(v.number()),
    })
  ),
}
Was this page helpful?