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('acoes').collect();
	}
});

export const create = mutation({
	args: {
		nome: v.string(),
		tipo: v.union(v.literal('projeto'), v.literal('lei'))
	},
	handler: async (ctx, args) => {
		const user = await getCurrentUserFunction(ctx);
		if (!user) throw new Error('Unauthorized');

		return await ctx.db.insert('acoes', {
			...args,
			criadoPor: user._id,
			criadoEm: Date.now()
		});
	}
});

export const update = mutation({
	args: {
		id: v.id('acoes'),
		nome: v.string(),
		tipo: v.union(v.literal('projeto'), v.literal('lei'))
	},
	handler: async (ctx, args) => {
		const user = await getCurrentUserFunction(ctx);
		if (!user) throw new Error('Unauthorized');

		await ctx.db.patch(args.id, {
			nome: args.nome,
			tipo: args.tipo
		});
	}
});

export const remove = mutation({
	args: {
		id: v.id('acoes')
	},
	handler: async (ctx, args) => {
		const user = await getCurrentUserFunction(ctx);
		if (!user) throw new Error('Unauthorized');

		await ctx.db.delete(args.id);
	}
});
