initial commit
This commit is contained in:
68
convex/users.ts
Normal file
68
convex/users.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import { query, mutation } from "./_generated/server";
|
||||
import { v } from "convex/values";
|
||||
import { getAuthUserId } from "@convex-dev/auth/server";
|
||||
import { DEFAULT_APP_SETTINGS, DEFAULT_CATEGORIES } from "./lib/seedCategories";
|
||||
import { requireUserId } from "./lib/helpers";
|
||||
|
||||
export const currentUser = query({
|
||||
args: {},
|
||||
returns: v.union(
|
||||
v.object({
|
||||
_id: v.id("users"),
|
||||
_creationTime: v.number(),
|
||||
name: v.optional(v.string()),
|
||||
email: v.optional(v.string()),
|
||||
emailVerificationTime: v.optional(v.number()),
|
||||
image: v.optional(v.string()),
|
||||
isAnonymous: v.optional(v.boolean()),
|
||||
}),
|
||||
v.null(),
|
||||
),
|
||||
handler: async (ctx) => {
|
||||
const userId = await getAuthUserId(ctx);
|
||||
if (!userId) return null;
|
||||
return await ctx.db.get("users", userId);
|
||||
},
|
||||
});
|
||||
|
||||
export const ensureSeeded = mutation({
|
||||
args: {},
|
||||
returns: v.null(),
|
||||
handler: async (ctx) => {
|
||||
const userId = await requireUserId(ctx);
|
||||
|
||||
const existingCategories = await ctx.db
|
||||
.query("categories")
|
||||
.withIndex("by_user", (q) => q.eq("userId", userId))
|
||||
.first();
|
||||
|
||||
if (!existingCategories) {
|
||||
for (const cat of DEFAULT_CATEGORIES) {
|
||||
await ctx.db.insert("categories", {
|
||||
userId,
|
||||
name: cat.name,
|
||||
kind: cat.kind,
|
||||
block: cat.block,
|
||||
color: cat.color,
|
||||
icon: cat.icon,
|
||||
sortOrder: cat.sortOrder,
|
||||
isSystem: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const existingSettings = await ctx.db
|
||||
.query("appSettings")
|
||||
.withIndex("by_user", (q) => q.eq("userId", userId))
|
||||
.unique();
|
||||
|
||||
if (!existingSettings) {
|
||||
await ctx.db.insert("appSettings", {
|
||||
userId,
|
||||
...DEFAULT_APP_SETTINGS,
|
||||
});
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user