feat: seed visitas ticket queue
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
parent
14b25e2cb3
commit
df8c4e29bb
1 changed files with 34 additions and 13 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue