| const api = (plop) => { | |
| plop.setGenerator('api', { | |
| description: 'Создает апи', | |
| prompts: [ | |
| { | |
| type: 'list', | |
| name: 'apiType', | |
| message: 'Какой тип запроса?', | |
| choices: [ | |
| { | |
| name: 'Запрос списка (fetchNames)', | |
| value: 'fetchList', | |
| }, | |
| { | |
| name: 'Запрос по id (fetchNameById)', | |
| value: 'fetchById', | |
| }, | |
| { | |
| name: 'Создание слайса (createName)', | |
| value: 'create', | |
| }, | |
| { | |
| name: 'Обновление слайса (updateName)', | |
| value: 'update', | |
| }, | |
| { | |
| name: 'Удаление слайса (deleteName)', | |
| value: 'delete', | |
| }, | |
| ], | |
| }, | |
| { | |
| type: 'list', | |
| name: 'layerName', | |
| message: 'В какой слой положить?', | |
| choices: [ | |
| { | |
| name: 'entities', | |
| value: 'entities', | |
| }, | |
| { | |
| name: 'features', | |
| value: 'features', | |
| }, | |
| { | |
| name: 'widgets', | |
| value: 'widgets', | |
| }, | |
| ], | |
| }, | |
| { | |
| type: 'input', | |
| name: 'sliceName', | |
| message: 'В какой слайс?', | |
| }, | |
| ], | |
| actions: (data) => { | |
| let actionList = []; | |
| switch (data.apiType) { | |
| case 'fetchList': | |
| actionList = [ | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/api/fetch{{sliceName}}s.ts', | |
| templateFile: './templates/api/fetchApi.hbs', | |
| }, | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/lib/query/useFetch{{sliceName}}s.tsx', | |
| templateFile: './templates/query/fetchQuery.hbs', | |
| }, | |
| ]; | |
| break; | |
| case 'fetchById': | |
| actionList = [ | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/api/fetch{{sliceName}}ById.ts', | |
| templateFile: './templates/api/fetchByIdApi.hbs', | |
| }, | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/lib/query/useFetch{{sliceName}}ById.tsx', | |
| templateFile: './templates/query/fetchByIdQuery.hbs', | |
| }, | |
| ]; | |
| break; | |
| case 'create': | |
| actionList = [ | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/api/create{{sliceName}}.ts', | |
| templateFile: './templates/api/createApi.hbs', | |
| }, | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/lib/query/useCreate{{sliceName}}.tsx', | |
| templateFile: './templates/query/createQuery.hbs', | |
| }, | |
| ]; | |
| break; | |
| case 'update': | |
| actionList = [ | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/api/update{{sliceName}}.ts', | |
| templateFile: './templates/api/updateApi.hbs', | |
| }, | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/lib/query/useUpdate{{sliceName}}.tsx', | |
| templateFile: './templates/query/updateQuery.hbs', | |
| }, | |
| ]; | |
| break; | |
| case 'delete': | |
| actionList = [ | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/api/delete{{sliceName}}.ts', | |
| templateFile: './templates/api/deleteApi.hbs', | |
| }, | |
| { | |
| type: 'add', | |
| path: '../src/{{layerName}}/{{sliceName}}/lib/query/useDelete{{sliceName}}.tsx', | |
| templateFile: './templates/query/deleteQuery.hbs', | |
| }, | |
| ]; | |
| break; | |
| default: | |
| console.log('Нет такого типа'); | |
| break; | |
| } | |
| return actionList; | |
| }, | |
| }); | |
| }; | |
| module.exports = api; | |