Skip to main content
Glama
Tiago-Alves-Dev

MCP Server TypeORM

products.js6.11 kB
import { AppDataSource } from "./ormconfig.js"; import { Product } from "./entities/Product.js"; export const ProductsDB = { /** * Retorna todos os produtos da tabela */ async getAllProducts() { try { const productRepository = AppDataSource.getRepository(Product); const products = await productRepository.find(); return { success: true, data: products, }; } catch (error) { console.error("Erro ao buscar produtos:", error); return { success: false, error: "Erro ao buscar produtos", details: error.message, }; } }, /** * Busca um produto pelo ID (UUID) * @param {string} id - UUID do produto */ async getProductById(id) { try { // Verifica se o ID é um UUID válido const isValidUUID = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(id); if (!isValidUUID) { return { success: false, error: "ID inválido", details: "O ID deve ser um UUID válido", }; } const productRepository = AppDataSource.getRepository(Product); const product = await productRepository.findOne({ where: { id } }); if (!product) { return { success: false, error: "Produto não encontrado", details: `Não foi encontrado produto com o ID: ${id}`, }; } return { success: true, data: product, }; } catch (error) { console.error("Erro ao buscar produto por ID:", error); return { success: false, error: "Erro ao buscar produto", details: error.message, }; } }, /** * Busca produtos por nome (busca parcial) */ async searchProductsByName(name) { try { const productRepository = AppDataSource.getRepository(Product); const products = await productRepository .createQueryBuilder("product") .where("product.name ILIKE :name", { name: `%${name}%` }) .getMany(); if (products.length === 0) { return { success: false, error: "Produtos não encontrados", details: `Não foram encontrados produtos com o nome: ${name}`, }; } return { success: true, data: products, }; } catch (error) { console.error("Erro ao buscar produtos por nome:", error); return { success: false, error: "Erro ao buscar produtos", details: error.message, }; } }, /** * Cria um novo produto * @param {Object} productData - Dados do produto */ async createProduct(productData) { try { const productRepository = AppDataSource.getRepository(Product); const newProduct = productRepository.create(productData); const savedProduct = await productRepository.save(newProduct); return { success: true, data: savedProduct, }; } catch (error) { console.error("Erro ao criar produto:", error); return { success: false, error: "Erro ao criar produto", details: error.message, }; } }, /** * Atualiza um produto existente * @param {string} id - UUID do produto * @param {Object} updateData - Dados para atualizar */ async updateProduct(id, updateData) { try { const productRepository = AppDataSource.getRepository(Product); const product = await productRepository.findOne({ where: { id } }); if (!product) { return { success: false, error: "Produto não encontrado", details: `Não foi encontrado produto com o ID: ${id}`, }; } // Atualiza apenas os campos fornecidos Object.assign(product, updateData); const updatedProduct = await productRepository.save(product); return { success: true, data: updatedProduct, }; } catch (error) { console.error("Erro ao atualizar produto:", error); return { success: false, error: "Erro ao atualizar produto", details: error.message, }; } }, /** * Remove um produto (soft delete - marca como inativo) * @param {string} id - UUID do produto */ async deleteProduct(id) { try { const productRepository = AppDataSource.getRepository(Product); const product = await productRepository.findOne({ where: { id } }); if (!product) { return { success: false, error: "Produto não encontrado", details: `Não foi encontrado produto com o ID: ${id}`, }; } // Soft delete - marca como inativo product.active = false; await productRepository.save(product); return { success: true, message: "Produto soft delete (desativadp) com sucesso", }; } catch (error) { console.error("Erro ao remover produto:", error); return { success: false, error: "Erro ao remover produto", details: error.message, }; } }, };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tiago-Alves-Dev/mcp-server-db'

If you have feedback or need assistance with the MCP directory API, please join our Discord server