Initial commit for project Spoon!
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { getAuthUserId } from '@convex-dev/auth/server';
|
||||
import { ConvexError } from 'convex/values';
|
||||
|
||||
import type { Doc, Id } from './_generated/dataModel';
|
||||
import type { MutationCtx, QueryCtx } from './_generated/server';
|
||||
|
||||
type Ctx = QueryCtx | MutationCtx;
|
||||
|
||||
export const getRequiredUserId = async (ctx: Ctx): Promise<Id<'users'>> => {
|
||||
const userId = await getAuthUserId(ctx);
|
||||
if (!userId) throw new ConvexError('Not authenticated.');
|
||||
return userId;
|
||||
};
|
||||
|
||||
export const getOwnedSpoon = async (
|
||||
ctx: Ctx,
|
||||
spoonId: Id<'spoons'>,
|
||||
ownerId: Id<'users'>,
|
||||
): Promise<Doc<'spoons'>> => {
|
||||
const spoon = await ctx.db.get(spoonId);
|
||||
if (spoon?.ownerId !== ownerId) {
|
||||
throw new ConvexError('Spoon not found.');
|
||||
}
|
||||
return spoon;
|
||||
};
|
||||
|
||||
export const requireText = (value: string, label: string): string => {
|
||||
const trimmed = value.trim();
|
||||
if (!trimmed) throw new ConvexError(`${label} is required.`);
|
||||
return trimmed;
|
||||
};
|
||||
|
||||
export const optionalText = (value: string | undefined) => {
|
||||
const trimmed = value?.trim();
|
||||
if (!trimmed) return undefined;
|
||||
return trimmed;
|
||||
};
|
||||
Reference in New Issue
Block a user