A company has many users, but a user
Here is my schema:
import { defineSchema, defineTable } from "convex/server"
import { Infer, v } from "convex/values"
export const roleValidation = v.union(
v.literal("DEWA"),
v.literal("ADMIN"),
v.literal("OWNER"),
v.literal("MANAGER"),
v.literal("CASHIER"),
v.literal("USER"),
)
export const companyValidation = v.object({
name: v.string(),
slug: v.optional(v.string()),
phone: v.string(),
logo: v.optional(v.string()),
isPublished: v.boolean(),
location: v.string(),
})
const userValidation = v.object({
clerkUser: v.any(), // this is UserJSON from @clerk/backend
email: v.string(),
role: roleValidation,
firstName: v.union(v.string(), v.null()),
lastName: v.union(v.string(), v.null()),
imageUrl: v.string(),
companyId: v.optional(v.id("companies")),
})
export default defineSchema(
{
companies: defineTable(companyValidation),
users: defineTable(userValidation)
.index("by_clerk_id", ["clerkUser.id"])
.index("email", ["email"])
.index("companyId", ["companyId"]),
},
)
