chore: reorganize project structure and ensure default queues

This commit is contained in:
Esdras Renan 2025-10-06 22:59:35 -03:00
parent 854887f499
commit 1cccb852a5
201 changed files with 417 additions and 838 deletions

View file

@ -0,0 +1,73 @@
import "dotenv/config"
import { ConvexHttpClient } from "convex/browser"
const tenantId = process.env.SYNC_TENANT_ID || "tenant-atlas"
const convexUrl = process.env.NEXT_PUBLIC_CONVEX_URL
if (!convexUrl) {
console.error("NEXT_PUBLIC_CONVEX_URL não configurado. Ajuste o .env antes de executar o script.")
process.exit(1)
}
const DEFAULT_QUEUES = [
{ name: "Chamados" },
{ name: "Laboratório" },
{ name: "Visitas" },
]
function slugify(value) {
return value
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^\w\s-]/g, "")
.trim()
.replace(/\s+/g, "-")
.replace(/-+/g, "-")
.toLowerCase()
}
async function main() {
const client = new ConvexHttpClient(convexUrl)
const agents = await client.query("users:listAgents", { tenantId })
const admin =
agents.find((user) => (user.role ?? "").toUpperCase() === "ADMIN") ??
agents[0]
if (!admin?._id) {
console.error("Nenhum usuário ADMIN encontrado no Convex para criar filas padrão.")
process.exit(1)
}
const existing = await client.query("queues:list", {
tenantId,
viewerId: admin._id,
})
const existingSlugs = new Set(existing.map((queue) => queue.slug))
const created = []
for (const def of DEFAULT_QUEUES) {
const slug = slugify(def.name)
if (existingSlugs.has(slug)) {
continue
}
await client.mutation("queues:create", {
tenantId,
actorId: admin._id,
name: def.name,
})
created.push(def.name)
}
if (created.length === 0) {
console.log("Nenhuma fila criada. As filas padrão já existem.")
} else {
console.log(`Filas criadas: ${created.join(", ")}`)
}
}
main().catch((error) => {
console.error("Falha ao garantir filas padrão", error)
process.exit(1)
})