feat: Add 'atas' (minutes/records) management feature, and implement various improvements across UI, backend logic, and authentication.

This commit is contained in:
2025-12-02 16:37:48 -03:00
parent 05e7f1181d
commit 4bd9e21748
265 changed files with 29156 additions and 26460 deletions

View File

@@ -1,67 +1,64 @@
import { v } from "convex/values";
import { query, mutation } from "./_generated/server";
import { v } from 'convex/values';
import { mutation, query } 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();
},
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;
},
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;
},
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;
},
args: {
id: v.id('cursos')
},
returns: v.null(),
handler: async (ctx, args) => {
await ctx.db.delete(args.id);
return null;
}
});