not-node 6.3.42 → 6.3.43
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/package.json +1 -1
- package/src/cli/renderers/fields.mjs +30 -1
- package/src/cli/renderers/forms.mjs +39 -15
- package/src/form/form.js +24 -4
- package/tmpl/files/module.server/layers/controllers/common/crud.ejs +2 -3
- package/tmpl/files/module.server/layers/fields.data.ejs +24 -0
- package/tmpl/files/module.server/layers/forms/create.ejs +3 -2
- package/tmpl/files/module.server/layers/forms/update.ejs +2 -1
package/package.json
CHANGED
|
@@ -1 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
const TEMPLATES_DIR = "./module.server/layers";
|
|
3
|
+
|
|
4
|
+
async function renderEntityDataField(createFileContent, SRC, DEST, data) {
|
|
5
|
+
await createFileContent(SRC, DEST, data);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default async (
|
|
9
|
+
module_layer_dir,
|
|
10
|
+
data,
|
|
11
|
+
config,
|
|
12
|
+
createFileContent,
|
|
13
|
+
PATH_TMPL
|
|
14
|
+
) => {
|
|
15
|
+
const TMPL_FILE_PATH_DATA = resolve(
|
|
16
|
+
PATH_TMPL,
|
|
17
|
+
TEMPLATES_DIR,
|
|
18
|
+
`fields.data.ejs`
|
|
19
|
+
);
|
|
20
|
+
const DEST_FILE_PATH_DATA = resolve(
|
|
21
|
+
module_layer_dir,
|
|
22
|
+
`_${data.modelName}_data.js`
|
|
23
|
+
);
|
|
24
|
+
await renderEntityDataField(
|
|
25
|
+
createFileContent,
|
|
26
|
+
TMPL_FILE_PATH_DATA,
|
|
27
|
+
DEST_FILE_PATH_DATA,
|
|
28
|
+
{ ...config, ...data }
|
|
29
|
+
);
|
|
30
|
+
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
+
import { tryFileAsync } from "../../common.js";
|
|
2
3
|
const TEMPLATES_DIR = "./module.server/layers/forms";
|
|
3
4
|
|
|
4
5
|
async function renderEntityActionForm(createFileContent, SRC, DEST, data) {
|
|
5
6
|
await createFileContent(SRC, DEST, data);
|
|
6
7
|
}
|
|
7
8
|
|
|
9
|
+
const COMMON_FORMS = ["listAll", "listAndCount", "delete", "get", "getRaw"];
|
|
10
|
+
|
|
8
11
|
export default async (
|
|
9
12
|
module_layer_dir,
|
|
10
13
|
data,
|
|
@@ -13,21 +16,42 @@ export default async (
|
|
|
13
16
|
PATH_TMPL
|
|
14
17
|
) => {
|
|
15
18
|
for (let actionName in data.actions) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
//if template is not depends on ModelName
|
|
20
|
+
if (COMMON_FORMS.includes(actionName)) {
|
|
21
|
+
const DEST_FILE_PATH = resolve(
|
|
22
|
+
module_layer_dir,
|
|
23
|
+
`${actionName}.js`
|
|
24
|
+
);
|
|
25
|
+
if (!(await tryFileAsync(DEST_FILE_PATH))) {
|
|
26
|
+
const TMPL_FILE_PATH = resolve(
|
|
27
|
+
PATH_TMPL,
|
|
28
|
+
TEMPLATES_DIR,
|
|
29
|
+
`${actionName}.ejs`
|
|
30
|
+
);
|
|
31
|
+
await renderEntityActionForm(
|
|
32
|
+
createFileContent,
|
|
33
|
+
TMPL_FILE_PATH,
|
|
34
|
+
DEST_FILE_PATH,
|
|
35
|
+
{ ...config, ...data }
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
const TMPL_FILE_PATH = resolve(
|
|
40
|
+
PATH_TMPL,
|
|
41
|
+
TEMPLATES_DIR,
|
|
42
|
+
`${actionName}.ejs`
|
|
43
|
+
);
|
|
44
|
+
const DEST_FILE_PATH = resolve(
|
|
45
|
+
module_layer_dir,
|
|
46
|
+
`${data.modelName}.${actionName}.js`
|
|
47
|
+
);
|
|
48
|
+
await renderEntityActionForm(
|
|
49
|
+
createFileContent,
|
|
50
|
+
TMPL_FILE_PATH,
|
|
51
|
+
DEST_FILE_PATH,
|
|
52
|
+
{ ...config, ...data }
|
|
53
|
+
);
|
|
54
|
+
}
|
|
31
55
|
}
|
|
32
56
|
const TMPL_FILE_PATH_DATA = resolve(PATH_TMPL, TEMPLATES_DIR, `_data.ejs`);
|
|
33
57
|
const DEST_FILE_PATH_DATA = resolve(
|
package/src/form/form.js
CHANGED
|
@@ -103,12 +103,32 @@ class Form {
|
|
|
103
103
|
this.#createRateLimiter(rate);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Creates model name string used in logging
|
|
108
|
+
* @param {string} MODULE_NAME
|
|
109
|
+
* @param {string|undefined} MODEL_NAME
|
|
110
|
+
* @param {string} actionName
|
|
111
|
+
* @returns {string}
|
|
112
|
+
*/
|
|
106
113
|
static createName(MODULE_NAME, MODEL_NAME, actionName) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
if (MODEL_NAME) {
|
|
115
|
+
return `${MODULE_NAME}:${MODEL_NAME}:${firstLetterToUpper(
|
|
116
|
+
actionName
|
|
117
|
+
)}Form`;
|
|
118
|
+
} else {
|
|
119
|
+
return `${MODULE_NAME}:Common:${firstLetterToUpper(
|
|
120
|
+
actionName
|
|
121
|
+
)}Form`;
|
|
122
|
+
}
|
|
110
123
|
}
|
|
111
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Create path to form in notDomain resources manager. Could be used to find form via notApplication.getForm(formPath)
|
|
127
|
+
* @param {string} MODULE_NAME
|
|
128
|
+
* @param {string|undefined} MODEL_NAME
|
|
129
|
+
* @param {string} actionName
|
|
130
|
+
* @returns {string}
|
|
131
|
+
*/
|
|
112
132
|
static createPath(MODULE_NAME, MODEL_NAME, actionName) {
|
|
113
133
|
if (MODEL_NAME) {
|
|
114
134
|
return `${MODULE_NAME}//${firstLetterToLower(
|
|
@@ -141,7 +161,7 @@ class Form {
|
|
|
141
161
|
*
|
|
142
162
|
*
|
|
143
163
|
* @param {import('../types').notNodeExpressRequest} req
|
|
144
|
-
* @return {
|
|
164
|
+
* @return {string|undefined}
|
|
145
165
|
* @memberof Form
|
|
146
166
|
*/
|
|
147
167
|
getModelName(req) {
|
|
@@ -83,9 +83,8 @@ class nc<%- ModelName %>Common extends notCRUD {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
createDefault() {
|
|
86
|
-
let newRecord = this.
|
|
87
|
-
|
|
88
|
-
<% for (let fieldName of fields){ %><%- fieldName %>: null,
|
|
86
|
+
let newRecord = this.getModel({
|
|
87
|
+
<% for (let fieldName of fields){ %><%- fieldName %>: undefined,
|
|
89
88
|
<% } %>
|
|
90
89
|
});
|
|
91
90
|
return newRecord;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const notNode = require("not-node");
|
|
2
|
+
const { firstLetterToLower } = notNode.Common;
|
|
3
|
+
const Schema = require("mongoose").Schema;
|
|
4
|
+
const { MODULE_NAME } = require("../const");
|
|
5
|
+
const MODEL_NAME = "<%- ModelName %>";
|
|
6
|
+
|
|
7
|
+
module.exports = {
|
|
8
|
+
model: {
|
|
9
|
+
type: Schema.Types.Mixed,
|
|
10
|
+
required: true,
|
|
11
|
+
validate: [
|
|
12
|
+
{
|
|
13
|
+
validator(val) {
|
|
14
|
+
return notNode.Application.getForm(
|
|
15
|
+
`${MODULE_NAME}//_${firstLetterToLower(
|
|
16
|
+
MODEL_NAME
|
|
17
|
+
)}_data`
|
|
18
|
+
).run(val);
|
|
19
|
+
},
|
|
20
|
+
message: `${MODULE_NAME}:${firstLetterToLower(MODEL_NAME)}`,
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
const { MODULE_NAME } = require("../const");
|
|
2
1
|
//DB related validation tools
|
|
3
2
|
const Form = require("not-node").Form;
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
const { MODULE_NAME } = require("../const");
|
|
5
|
+
const MODEL_NAME = '<%- ModelName %>';
|
|
5
6
|
const actionName = 'create';
|
|
6
7
|
const FORM_NAME = Form.createName(MODULE_NAME, MODEL_NAME, actionName);
|
|
7
8
|
//form
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
const { MODULE_NAME } = require("../const");
|
|
2
1
|
const Form = require("not-node").Form;
|
|
3
2
|
|
|
3
|
+
const { MODULE_NAME } = require("../const");
|
|
4
|
+
const MODEL_NAME = '<%- ModelName %>';
|
|
4
5
|
const actionName = 'update';
|
|
5
6
|
const FORM_NAME = Form.createName(MODULE_NAME, MODEL_NAME, actionName);
|
|
6
7
|
|