#!/usr/bin/env node /** * Script: Criar novo service para feature * Uso: node create-service.js NomeService [feature] * Exemplo: node create-service.js userService rh */ const fs = require('fs'); const path = require('path'); const [, , serviceName, feature] = process.argv; if (!serviceName) { console.error('❌ Nome do service é obrigatório!'); console.log('Uso: node create-service.js NomeService [feature]'); process.exit(1); } // Normalizar nome (adicionar Service se não tiver) const normalizedName = serviceName.endsWith('Service') ? serviceName : `${serviceName}Service`; // Definir caminho const basePath = feature ? path.join(__dirname, '../../src/features', feature) : path.join(__dirname, '../../src/services'); const fileName = `${normalizedName}.js`; const filePath = path.join(basePath, fileName); // Criar pasta se não existir if (!fs.existsSync(basePath)) { fs.mkdirSync(basePath, { recursive: true }); } // Template do service const serviceTemplate = `import api from '@/services/api'; /** * ${normalizedName} - Service para gerenciar dados */ const ${normalizedName} = { /** * Buscar lista * @param {Object} filters - Filtros opcionais * @returns {Promise} */ async getList(filters = {}) { try { const response = await api.get('/endpoint', { params: filters }); return response.data; } catch (error) { console.error('Erro ao buscar lista:', error); throw error; } }, /** * Buscar por ID * @param {string|number} id - ID do registro * @returns {Promise} */ async getById(id) { try { const response = await api.get(\`/endpoint/\${id}\`); return response.data; } catch (error) { console.error('Erro ao buscar item:', error); throw error; } }, /** * Criar novo * @param {Object} data - Dados para criar * @returns {Promise} */ async create(data) { try { const response = await api.post('/endpoint', data); return response.data; } catch (error) { console.error('Erro ao criar:', error); throw error; } }, /** * Atualizar * @param {string|number} id - ID do registro * @param {Object} data - Dados para atualizar * @returns {Promise} */ async update(id, data) { try { const response = await api.put(\`/endpoint/\${id}\`, data); return response.data; } catch (error) { console.error('Erro ao atualizar:', error); throw error; } }, /** * Deletar * @param {string|number} id - ID do registro * @returns {Promise} */ async delete(id) { try { await api.delete(\`/endpoint/\${id}\`); } catch (error) { console.error('Erro ao deletar:', error); throw error; } }, }; export default ${normalizedName}; `; // Escrever arquivo fs.writeFileSync(filePath, serviceTemplate); console.log(`✅ Service ${normalizedName} criado com sucesso!`); console.log(`📁 Caminho: ${filePath}`); console.log(`\n📝 Próximos passos:`); console.log(`1. Ajustar endpoints da API`); console.log(`2. Adicionar métodos específicos se necessário`); console.log(`3. Importar em hooks ou views`);