arcadiasuite/server/modules/_template.ts

65 lines
1.9 KiB
TypeScript

/**
* TEMPLATE - Exemplo de módulo de rotas para o Dev Center
*
* Copie este arquivo e renomeie para criar as rotas de um módulo.
* Exemplo: server/modules/bsc.ts
*
* REGRAS:
* 1. Exporte default um Router do Express
* 2. O prefixo /api/modules/{nomeModulo} é adicionado automaticamente
* 3. Importe schemas do módulo via @shared/schemas/{nomeModulo}
* 4. Use db de ../../db para queries
* 5. Valide inputs com Zod/drizzle-zod
*
* IMPORTANTE:
* - O auto-loader monta as rotas em /api/modules/{nomeDoArquivo}
* - Arquivos que começam com _ são ignorados (_template.ts, _utils.ts)
*/
/*
import { Router } from "express";
import { db } from "../../db";
import { exemploItems, insertExemploItemSchema } from "@shared/schemas/exemplo";
import { eq } from "drizzle-orm";
const router = Router();
// GET /api/modules/exemplo - Listar items
router.get("/", async (req, res) => {
try {
const items = await db.select().from(exemploItems);
res.json(items);
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
// POST /api/modules/exemplo - Criar item
router.post("/", async (req, res) => {
try {
const parsed = insertExemploItemSchema.safeParse(req.body);
if (!parsed.success) {
return res.status(400).json({ error: parsed.error.format() });
}
const [item] = await db.insert(exemploItems).values(parsed.data).returning();
res.status(201).json(item);
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
// GET /api/modules/exemplo/:id - Buscar por ID
router.get("/:id", async (req, res) => {
try {
const [item] = await db.select().from(exemploItems)
.where(eq(exemploItems.id, parseInt(req.params.id)));
if (!item) return res.status(404).json({ error: "Não encontrado" });
res.json(item);
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
export default router;
*/