Files
conve-x/convex/schema.ts
T

46 lines
1.5 KiB
TypeScript

import { defineSchema, defineTable } from 'convex/server';
import { v } from 'convex/values';
export default defineSchema(
{
users: defineTable({
clerkUser: v.object({
id: v.string(),
object: v.string(),
username: v.union(v.string(), v.null()),
first_name: v.string(),
last_name: v.string(),
gender: v.string(),
birthday: v.string(),
profile_image_url: v.string(),
image_url: v.string(),
has_image: v.boolean(),
primary_email_address_id: v.boolean(),
primary_phone_number_id: v.union(v.string(), v.null()),
primary_web3_wallet_id: v.union(v.string(), v.null()),
password_enabled: v.boolean(),
totp_enabled: v.boolean(),
backup_code_enabled: v.boolean(),
two_factor_enabled: v.boolean(),
banned: v.boolean(),
email_addresses: v.any(),
phone_numbers: v.any(),
web3_wallets: v.any(),
external_accounts: v.any(),
external_id: v.union(v.string(), v.null()),
last_sign_in_at: v.union(v.number(), v.null()),
public_metadata: v.any(),
private_metadata: v.any(),
unsafe_metadata: v.any(),
created_at: v.number(),
updated_at: v.number(),
}),
}).index('by_clerk_id', ['clerkUser.id']),
posts: defineTable({
parentPostId: v.optional(v.id('posts')),
userId: v.id('users'),
content: v.array(v.string()),
}).index('by_user_id', ['userId']),
},
{ schemaValidation: false }
);