import { v } from "convex/values";
import { query, mutation } from "./_generated/server";

export const listarPorFuncionario = query({
  args: {
    funcionarioId: v.id("funcionarios"),
  },
  returns: v.array(
    v.object({
      _id: v.id("cursos"),
      _creationTime: v.number(),
      funcionarioId: v.id("funcionarios"),
      descricao: v.string(),
      data: v.string(),
      certificadoId: v.optional(v.id("_storage")),
    })
  ),
  handler: async (ctx, args) => {
    return await ctx.db
      .query("cursos")
      .withIndex("by_funcionario", (q) => 
        q.eq("funcionarioId", args.funcionarioId)
      )
      .collect();
  },
});

export const criar = mutation({
  args: {
    funcionarioId: v.id("funcionarios"),
    descricao: v.string(),
    data: v.string(),
    certificadoId: v.optional(v.id("_storage")),
  },
  returns: v.id("cursos"),
  handler: async (ctx, args) => {
    const cursoId = await ctx.db.insert("cursos", args);
    return cursoId;
  },
});

export const atualizar = mutation({
  args: {
    id: v.id("cursos"),
    descricao: v.string(),
    data: v.string(),
    certificadoId: v.optional(v.id("_storage")),
  },
  returns: v.null(),
  handler: async (ctx, args) => {
    const { id, ...updates } = args;
    await ctx.db.patch(id, updates);
    return null;
  },
});

export const excluir = mutation({
  args: {
    id: v.id("cursos"),
  },
  returns: v.null(),
  handler: async (ctx, args) => {
    await ctx.db.delete(args.id);
    return null;
  },
});

