132 lines
3.2 KiB
JavaScript
132 lines
3.2 KiB
JavaScript
#!/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<Array>}
|
|
*/
|
|
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<Object>}
|
|
*/
|
|
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<Object>}
|
|
*/
|
|
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<Object>}
|
|
*/
|
|
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<void>}
|
|
*/
|
|
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`);
|