import { mutation, query } from './_generated/server'; import { v } from 'convex/values'; import { getCurrentUserFunction } from './auth'; export const list = query({ args: {}, handler: async (ctx) => { return await ctx.db.query('produtos').collect(); } }); export const search = query({ args: { query: v.string() }, handler: async (ctx, args) => { return await ctx.db .query('produtos') .withSearchIndex('search_nome', (q) => q.search('nome', args.query)) .take(10); } }); export const create = mutation({ args: { nome: v.string(), valorEstimado: v.string(), tipo: v.union(v.literal('servico'), v.literal('estrutura'), v.literal('insumo')) }, handler: async (ctx, args) => { const user = await getCurrentUserFunction(ctx); if (!user) throw new Error('Unauthorized'); return await ctx.db.insert('produtos', { ...args, criadoPor: user._id, criadoEm: Date.now() }); } }); export const update = mutation({ args: { id: v.id('produtos'), nome: v.string(), valorEstimado: v.string(), tipo: v.union(v.literal('servico'), v.literal('estrutura'), v.literal('insumo')) }, handler: async (ctx, args) => { const user = await getCurrentUserFunction(ctx); if (!user) throw new Error('Unauthorized'); await ctx.db.patch(args.id, { nome: args.nome, valorEstimado: args.valorEstimado, tipo: args.tipo }); } }); export const remove = mutation({ args: { id: v.id('produtos') }, handler: async (ctx, args) => { const user = await getCurrentUserFunction(ctx); if (!user) throw new Error('Unauthorized'); await ctx.db.delete(args.id); } });