feat: seed visitas ticket queue

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
esdrasrenan 2025-10-06 18:35:31 -03:00
parent 14b25e2cb3
commit df8c4e29bb

View file

@ -4,23 +4,20 @@ export const seedDemo = mutation({
args: {}, args: {},
handler: async (ctx) => { handler: async (ctx) => {
const tenantId = "tenant-atlas"; const tenantId = "tenant-atlas";
const desiredQueues = [
{ name: "Chamados", slug: "chamados" },
{ name: "Laboratório", slug: "laboratorio" },
{ name: "Visitas", slug: "visitas" },
];
// Ensure queues // Ensure queues
const existingQueues = await ctx.db const existingQueues = await ctx.db
.query("queues") .query("queues")
.withIndex("by_tenant", (q) => q.eq("tenantId", tenantId)) .withIndex("by_tenant", (q) => q.eq("tenantId", tenantId))
.collect(); .collect();
let queues = existingQueues.length
? existingQueues
: await Promise.all(
[
{ name: "Chamados", slug: "chamados" },
{ name: "Laboratório", slug: "laboratorio" },
].map((q) => ctx.db.insert("queues", { tenantId, name: q.name, slug: q.slug, teamId: undefined }))
).then((ids) => Promise.all(ids.map((id) => ctx.db.get(id))))
;
queues = await Promise.all( const normalizedQueues = await Promise.all(
queues.map(async (queue) => { existingQueues.map(async (queue) => {
if (!queue) return queue; if (!queue) return queue;
if (queue.name === "Suporte N1" || queue.slug === "suporte-n1") { if (queue.name === "Suporte N1" || queue.slug === "suporte-n1") {
await ctx.db.patch(queue._id, { name: "Chamados", slug: "chamados" }); await ctx.db.patch(queue._id, { name: "Chamados", slug: "chamados" });
@ -34,6 +31,30 @@ export const seedDemo = mutation({
}) })
); );
const presentQueues = normalizedQueues.filter(
(queue): queue is NonNullable<(typeof normalizedQueues)[number]> => Boolean(queue)
);
const queuesBySlug = new Map(presentQueues.map((queue) => [queue.slug, queue]));
const queuesByName = new Map(presentQueues.map((queue) => [queue.name, queue]));
const queues = [] as typeof presentQueues;
for (const def of desiredQueues) {
let queue = queuesBySlug.get(def.slug) ?? queuesByName.get(def.name);
if (!queue) {
const newId = await ctx.db.insert("queues", { tenantId, name: def.name, slug: def.slug, teamId: undefined });
queue = (await ctx.db.get(newId))!;
queuesBySlug.set(queue.slug, queue);
queuesByName.set(queue.name, queue);
}
queues.push(queue);
}
const queueChamados = queuesBySlug.get("chamados");
const queueLaboratorio = queuesBySlug.get("laboratorio");
if (!queueChamados || !queueLaboratorio) {
throw new Error("Filas padrão não foram inicializadas");
}
// Ensure users // Ensure users
async function ensureUser(name: string, email: string, role = "AGENT") { async function ensureUser(name: string, email: string, role = "AGENT") {
const found = await ctx.db const found = await ctx.db
@ -56,8 +77,8 @@ export const seedDemo = mutation({
.order("desc") .order("desc")
.take(1); .take(1);
let ref = newestRef[0]?.reference ?? 41000; let ref = newestRef[0]?.reference ?? 41000;
const queue1 = queues[0]!._id; const queue1 = queueChamados._id;
const queue2 = queues[1]!._id; const queue2 = queueLaboratorio._id;
const t1 = await ctx.db.insert("tickets", { const t1 = await ctx.db.insert("tickets", {
tenantId, tenantId,