Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 42 additions & 42 deletions convex/schema.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
import { defineSchema, defineTable } from 'convex/server'
import { authTables } from '@convex-dev/auth/server'
import { v } from 'convex/values'
import { z } from 'zod'

// Zod schema for valid capabilities
// Valid capabilities list (exported for use throughout the app)
export const VALID_CAPABILITIES = ['admin', 'disableAds', 'builder'] as const
export const CapabilitySchema = z.enum(VALID_CAPABILITIES)
export type Capability = z.infer<typeof CapabilitySchema>

// Helper function to validate a capability
export function validateCapability(
capability: string
): capability is Capability {
return VALID_CAPABILITIES.includes(capability as Capability)
}

// Valid capabilities for Convex validation
const validCapabilities = VALID_CAPABILITIES

const schema = defineSchema({
...authTables,
users: defineTable({
displayUsername: v.optional(v.string()),
createdAt: v.number(),
image: v.optional(v.string()),
name: v.optional(v.string()),
email: v.string(),
updatedAt: v.number(),
capabilities: v.array(
v.union(...validCapabilities.map((cap) => v.literal(cap)))
),
adsDisabled: v.optional(v.boolean()),
interestedInHidingAds: v.optional(v.boolean()),
}).searchIndex('search_email', {
searchField: 'email',
}),
// .index('by_email', ['email']),
})

export default schema
import { defineSchema, defineTable } from 'convex/server'
import { authTables } from '@convex-dev/auth/server'
import { v } from 'convex/values'
import { z } from 'zod'
// Zod schema for valid capabilities
// Valid capabilities list (exported for use throughout the app)
export const VALID_CAPABILITIES = ['admin', 'disableAds', 'builder'] as const
export const CapabilitySchema = z.enum(VALID_CAPABILITIES)
export type Capability = z.infer<typeof CapabilitySchema>
// Helper function to validate a capability
export function validateCapability(
capability: string
): capability is Capability {
return VALID_CAPABILITIES.includes(capability as Capability)
}
// Valid capabilities for Convex validation
const validCapabilities = VALID_CAPABILITIES
const schema = defineSchema({
...authTables,
users: defineTable({
displayUsername: v.optional(v.string()),
createdAt: v.number(),
image: v.optional(v.string()),
name: v.optional(v.string()),
email: v.string(),
updatedAt: v.number(),
capabilities: v.array(
v.union(...validCapabilities.map((cap) => v.literal(cap)))
),
adsDisabled: v.optional(v.boolean()),
interestedInHidingAds: v.optional(v.boolean()),
}).searchIndex('search_email', {
searchField: 'email',
}),
// .index('by_email', ['email']),
})
export default schema
Loading
Loading