@lenne.tech/cli 0.0.114 → 0.0.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/fullstack/init.js +3 -2
- package/build/commands/server/module.js +28 -9
- package/build/templates/nest-server-module/template.controller.ts.ejs +45 -0
- package/build/templates/nest-server-module/template.module.ts.ejs +17 -11
- package/build/templates/nest-server-module/template.resolver.ts.ejs +1 -1
- package/package.json +1 -1
|
@@ -132,7 +132,8 @@ const NewCommand = {
|
|
|
132
132
|
name: `${name}-api-server`,
|
|
133
133
|
version: '0.0.0',
|
|
134
134
|
});
|
|
135
|
-
|
|
135
|
+
// Replace secret or private keys and remove `nest-server`
|
|
136
|
+
yield gluegun_1.patching.update(`./${projectDir}/projects/api/src/config.env.ts`, content => server.replaceSecretOrPrivateKeys(content).replace(/nest-server-/g, `${projectDir}-`));
|
|
136
137
|
// Check if git init is active
|
|
137
138
|
if (addToGit) {
|
|
138
139
|
// Commit changes
|
|
@@ -166,4 +167,4 @@ const NewCommand = {
|
|
|
166
167
|
}),
|
|
167
168
|
};
|
|
168
169
|
exports.default = NewCommand;
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9mdWxsc3RhY2svaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLHFDQUFtRDtBQUtuRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDZixXQUFXLEVBQUUsbUNBQW1DO0lBQ2hELE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFDeEIsTUFBTSxFQUNOLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUN0QixNQUFNLEdBQ1AsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLE9BQU87UUFDUCxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUV6QyxZQUFZO1FBQ1osSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsNEJBQTRCO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxD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
|
|
@@ -23,7 +23,7 @@ const NewCommand = {
|
|
|
23
23
|
// Options:
|
|
24
24
|
const { currentItem, objectsToAdd, preventExitProcess, referencesToAdd } = Object.assign({ currentItem: '', objectsToAdd: [], preventExitProcess: false, referencesToAdd: [] }, options);
|
|
25
25
|
// Retrieve the tools we need
|
|
26
|
-
const { filesystem, helper, parameters, patching, print: { divider, error, info, spin, success }, server, strings: { camelCase, kebabCase, pascalCase }, system, template, } = toolbox;
|
|
26
|
+
const { filesystem, helper, parameters, patching, print: { divider, error, info, spin, success }, prompt: { ask, confirm }, server, strings: { camelCase, kebabCase, pascalCase }, system, template, } = toolbox;
|
|
27
27
|
// Start timer
|
|
28
28
|
const timer = system.startTimer();
|
|
29
29
|
// Info
|
|
@@ -40,6 +40,12 @@ const NewCommand = {
|
|
|
40
40
|
if (!name) {
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
|
+
const controller = (yield ask({
|
|
44
|
+
choices: ['Rest', 'GraphQL', 'Both'],
|
|
45
|
+
message: 'What controller type?',
|
|
46
|
+
name: 'controller',
|
|
47
|
+
type: 'select',
|
|
48
|
+
})).controller;
|
|
43
49
|
// Set up initial props (to pass into templates)
|
|
44
50
|
const nameCamel = camelCase(name);
|
|
45
51
|
const nameKebab = kebabCase(name);
|
|
@@ -69,6 +75,13 @@ const NewCommand = {
|
|
|
69
75
|
target: (0, path_1.join)(directory, 'inputs', `${nameKebab}.input.ts`),
|
|
70
76
|
template: 'nest-server-module/inputs/template.input.ts.ejs',
|
|
71
77
|
});
|
|
78
|
+
if (controller === 'Rest' || controller === 'Both') {
|
|
79
|
+
yield template.generate({
|
|
80
|
+
props: { lowercase: name.toLowerCase(), nameCamel: camelCase(name), nameKebab: kebabCase(name), namePascal: pascalCase(name) },
|
|
81
|
+
target: (0, path_1.join)(directory, `${nameKebab}.controller.ts`),
|
|
82
|
+
template: 'nest-server-module/template.controller.ts.ejs',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
72
85
|
// nest-server-module/inputs/xxx-create.input.ts
|
|
73
86
|
yield template.generate({
|
|
74
87
|
props: { imports: createTemplate.imports, nameCamel, nameKebab, namePascal, props: createTemplate.props },
|
|
@@ -96,16 +109,18 @@ const NewCommand = {
|
|
|
96
109
|
});
|
|
97
110
|
// nest-server-module/xxx.module.ts
|
|
98
111
|
yield template.generate({
|
|
99
|
-
props: { nameCamel, nameKebab, namePascal },
|
|
112
|
+
props: { controller, nameCamel, nameKebab, namePascal },
|
|
100
113
|
target: (0, path_1.join)(directory, `${nameKebab}.module.ts`),
|
|
101
114
|
template: 'nest-server-module/template.module.ts.ejs',
|
|
102
115
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
116
|
+
if (controller === 'GraphQL' || controller === 'Both') {
|
|
117
|
+
// nest-server-module/xxx.resolver.ts
|
|
118
|
+
yield template.generate({
|
|
119
|
+
props: { nameCamel, nameKebab, namePascal },
|
|
120
|
+
target: (0, path_1.join)(directory, `${nameKebab}.resolver.ts`),
|
|
121
|
+
template: 'nest-server-module/template.resolver.ts.ejs',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
109
124
|
// nest-server-module/xxx.service.ts
|
|
110
125
|
yield template.generate({
|
|
111
126
|
props: { nameCamel, nameKebab, namePascal },
|
|
@@ -156,6 +171,10 @@ const NewCommand = {
|
|
|
156
171
|
const nextObj = objectsToAdd.shift().object;
|
|
157
172
|
yield object_1.default.run(toolbox, { currentItem: nextObj, objectsToAdd, preventExitProcess: true, referencesToAdd });
|
|
158
173
|
}
|
|
174
|
+
// Prettier
|
|
175
|
+
if (yield confirm('Run Prettier?', true)) {
|
|
176
|
+
yield system.run('npx prettier --write .');
|
|
177
|
+
}
|
|
159
178
|
divider();
|
|
160
179
|
// We're done, so show what to do next
|
|
161
180
|
if (!preventExitProcess) {
|
|
@@ -171,4 +190,4 @@ const NewCommand = {
|
|
|
171
190
|
}),
|
|
172
191
|
};
|
|
173
192
|
exports.default = NewCommand;
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSwrQkFBNEI7QUFJNUIscUNBQWlDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQTJCO0lBQ3pDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSw2QkFBNkI7SUFDMUMsTUFBTSxFQUFFLEtBQUs7SUFDYixJQUFJLEVBQUUsUUFBUTtJQUNkLEdBQUcsRUFBRSxDQUNILE9BQStCLEVBQy9CLE9BS0MsRUFDRCxFQUFFO1FBRUYsV0FBVztRQUNYLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxtQkFDdEUsV0FBVyxFQUFFLEVBQUUsRUFDZixZQUFZLEVBQUUsRUFBRSxFQUNoQixrQkFBa0IsRUFBRSxLQUFLLEVBQ3pCLGVBQWUsRUFBRSxFQUFFLElBQ2hCLE9BQU8sQ0FDWCxDQUFDO1FBRUYsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQ3hCLE1BQU0sRUFDTixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUM3QyxNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsb0NBQW9DLFdB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
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ApiCommonErrorResponses, FilterArgs, RoleEnum, Roles } from '@lenne.tech/nest-server';
|
|
2
|
+
import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common';
|
|
3
|
+
|
|
4
|
+
import { <%= props.namePascal %>Service } from './<%= props.nameKebab %>.service';
|
|
5
|
+
import { <%= props.namePascal %>Input } from './inputs/<%= props.nameKebab %>.input';
|
|
6
|
+
import { <%= props.namePascal %>CreateInput } from './inputs/<%= props.nameKebab %>-create.input';
|
|
7
|
+
|
|
8
|
+
@ApiCommonErrorResponses()
|
|
9
|
+
@Controller('<%= props.lowercase %>')
|
|
10
|
+
@Roles(RoleEnum.ADMIN)
|
|
11
|
+
export class <%= props.namePascal %>Controller {
|
|
12
|
+
|
|
13
|
+
constructor(protected readonly <%= props.nameCamel %>Service: <%= props.namePascal %>Service) {}
|
|
14
|
+
|
|
15
|
+
@Post()
|
|
16
|
+
@Roles(RoleEnum.ADMIN)
|
|
17
|
+
async create(@Body() input: <%= props.namePascal %>CreateInput): Promise<any> {
|
|
18
|
+
return await this.<%= props.nameCamel %>Service.create(input);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Get()
|
|
22
|
+
@Roles(RoleEnum.ADMIN)
|
|
23
|
+
async get(@Body() filterArgs: FilterArgs): Promise<any> {
|
|
24
|
+
return await this.<%= props.nameCamel %>Service.find(filterArgs);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Get(':id')
|
|
28
|
+
@Roles(RoleEnum.ADMIN)
|
|
29
|
+
async getById(@Param('id') id: string): Promise<any> {
|
|
30
|
+
return await this.<%= props.nameCamel %>Service.findOne({filterQuery: { _id: id }})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@Put(':id')
|
|
34
|
+
@Roles(RoleEnum.ADMIN)
|
|
35
|
+
async update(@Param('id') id: string, @Body() input: <%= props.namePascal %>Input): Promise<any> {
|
|
36
|
+
return await this.<%= props.nameCamel %>Service.update(id, input);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Delete(':id')
|
|
40
|
+
@Roles(RoleEnum.ADMIN)
|
|
41
|
+
async delete(@Param('id') id: string): Promise<any> {
|
|
42
|
+
return await this.<%= props.nameCamel %>Service.delete(id);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
@@ -5,23 +5,29 @@ import { PubSub } from 'graphql-subscriptions';
|
|
|
5
5
|
|
|
6
6
|
import { UserModule } from '../user/user.module';
|
|
7
7
|
import { <%= props.namePascal %>, <%= props.namePascal %>Schema } from './<%= props.nameKebab %>.model';
|
|
8
|
+
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
|
|
8
9
|
import { <%= props.namePascal %>Resolver } from './<%= props.nameKebab %>.resolver';
|
|
10
|
+
<% } -%>
|
|
9
11
|
import { <%= props.namePascal %>Service } from './<%= props.nameKebab %>.service';
|
|
12
|
+
<% if ((props.controller === 'Rest') || (props.controller === 'Both')) { -%>
|
|
13
|
+
import { <%= props.namePascal %>Controller } from './<%= props.nameKebab %>.controller';
|
|
14
|
+
<% } -%>
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
* <%= props.namePascal %> module
|
|
18
|
+
*/
|
|
14
19
|
@Module({
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
],
|
|
20
|
+
<% if ((props.controller === 'Rest') || (props.controller === 'Both')) { -%>
|
|
21
|
+
controllers: [<%= props.namePascal %>Controller],
|
|
22
|
+
<% } -%>
|
|
23
|
+
exports: [ MongooseModule, <% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%> <%= props.namePascal %>Resolver, <% } -%> <%= props.namePascal %>Service],
|
|
24
|
+
imports: [ MongooseModule.forFeature([{ name: <%= props.namePascal %>.name, schema: <%= props.namePascal %>Schema }]), forwardRef(() => UserModule) ],
|
|
21
25
|
providers: [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
ConfigService,
|
|
27
|
+
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
|
|
28
|
+
<%= props.namePascal %>Resolver,
|
|
29
|
+
<% } -%>
|
|
30
|
+
<%= props.namePascal %>Service,
|
|
25
31
|
{
|
|
26
32
|
provide: 'PUB_SUB',
|
|
27
33
|
useValue: new PubSub(),
|
|
@@ -135,6 +135,6 @@ export class <%= props.namePascal %>Resolver {
|
|
|
135
135
|
resolve: (value) => value,
|
|
136
136
|
})
|
|
137
137
|
async <%= props.nameCamel %>Created() {
|
|
138
|
-
return this.pubSub.
|
|
138
|
+
return this.pubSub.asyncIterableIterator('<%= props.nameCamel %>Created');
|
|
139
139
|
}
|
|
140
140
|
}
|