create-sip 1.0.0 → 1.0.1

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.
Files changed (3) hide show
  1. package/README.md +84 -0
  2. package/expressapi/op +21 -14
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -22,6 +22,22 @@ npm create sip@latest
22
22
  * Write project name.
23
23
  * Select project type.
24
24
 
25
+ Options:
26
+
27
+ ```txt
28
+ ✔ Project name: … vmi
29
+ ? Project type: › - Use arrow-keys. Return to submit.
30
+ Webpage
31
+ Web Bootstrap
32
+ JavaScript
33
+ Web Node.js
34
+ ESBuild JavaScript
35
+ ESBuild TypeScript
36
+ hai mock API
37
+ Express API
38
+ ❯ Cancel
39
+ ```
40
+
25
41
  ## Express API
26
42
 
27
43
  Key generation:
@@ -86,3 +102,71 @@ Generate admin user:
86
102
  ```bash
87
103
  node op admin:generate
88
104
  ```
105
+
106
+ ### Copy default config file
107
+
108
+ Copy **config/default.json.example** to **config/default.json** file.
109
+
110
+ ### Seed database
111
+
112
+ Load data from JSON or CSV file.
113
+
114
+ Examples:
115
+
116
+ ```bash
117
+ node op db:seed thing somethings.json
118
+ node op db:seed thing somethings.csv
119
+ ```
120
+
121
+ For example JSON file:
122
+
123
+ employees.json:
124
+
125
+ ```json
126
+ [
127
+ { "id": 1, "name": "Tom Large" },
128
+ { "id": 2, "name": "Jack Small" }
129
+ ]
130
+ ```
131
+
132
+ The default separator is comma.
133
+
134
+ ```cmd
135
+ node op db:seed employee employees.json
136
+ ```
137
+
138
+ For example CSV file:
139
+
140
+ employees.csv:
141
+
142
+ ```csv
143
+ id,name
144
+ 1,Joe Kitin
145
+ 2,Peter Fall
146
+ ```
147
+
148
+ If you have colon separator, use sep parameter.
149
+
150
+ ```csv
151
+ id:name
152
+ 1:Joe Kitin
153
+ 2:Peter Fall
154
+ ```
155
+
156
+ ```cmd
157
+ node op db:seed employee employees.csv --sep :
158
+ ```
159
+
160
+ If the file has semicolon separator, use sep parameter, for example:
161
+
162
+ ```csv
163
+ id;name
164
+ 1;Joe Kitin
165
+ 2;Peter Fall
166
+ ```
167
+
168
+ Use next command:
169
+
170
+ ```cmd
171
+ node op db:seed employee employees.csv --sep ";"
172
+ ```
package/expressapi/op CHANGED
@@ -1,11 +1,10 @@
1
- import replace from 'replace'
2
- import fse from 'fs-extra'
3
- import fsp from 'fs/promises'
4
- import { generateApiKey } from 'generate-api-key'
1
+ import replace from 'replace';
2
+ import fse from 'fs-extra';
3
+ import fsp from 'fs/promises';
4
+ import { generateApiKey } from 'generate-api-key';
5
5
  import bcrypt from 'bcryptjs';
6
6
  import path from 'path';
7
- import { read } from 'read'
8
- import { start } from 'repl';
7
+ import { read } from 'read';
9
8
 
10
9
  if(process.argv.length == 3 && process.argv[2] == 'help') {
11
10
  console.log('Usable commands:');
@@ -14,7 +13,7 @@ if(process.argv.length == 3 && process.argv[2] == 'help') {
14
13
  console.log(' node op key:generate');
15
14
  console.log(' node op conf:generate');
16
15
  console.log(' node op admin:generate');
17
- console.log(' node op db:seed <model> <filePath>');
16
+ console.log(' node op db:seed <model> <filePath> [sep]');
18
17
  process.exit(0);
19
18
  } else if(process.argv.length == 3 && process.argv[2] == 'key:generate') {
20
19
  startGenerateKey();
@@ -25,14 +24,23 @@ if(process.argv.length == 3 && process.argv[2] == 'help') {
25
24
  } else if(process.argv[2] === 'db:seed') {
26
25
  if(process.argv.length < 5) {
27
26
  console.log('Usage:');
28
- console.log('node op db:seed <model> <filePath>');
27
+ console.log('node op db:seed <model> <filePath> [sep]');
29
28
  console.log('Examples:');
30
29
  console.log('node op db:seed thing somethings.json');
31
30
  console.log('node op db:seed thing somethings.csv');
31
+ console.log('node op db:seed thing somethings.csv ,');
32
+ console.log('node op db:seed thing somethings.csv :');
33
+ console.log('node op db:seed thing somethings.csv ";"');
32
34
  }
33
35
  const model = process.argv[3];
34
36
  const filePath = process.argv[4];
35
- runSeed(model, filePath);
37
+ if(process.argv.length == 6) {
38
+ const sep = process.argv[5];
39
+ runSeed(model, filePath, sep);
40
+ }else {
41
+ runSeed(model, filePath);
42
+ }
43
+
36
44
  } else if(process.argv[2] === 'make:model') {
37
45
  if(process.argv.length < 4) {
38
46
  console.log('Usage:');
@@ -234,8 +242,7 @@ const seedFromJson = async (model, filePath) => {
234
242
  }
235
243
  }
236
244
 
237
- const seedFromCsv = async (model, filePath) => {
238
- const sep = ','
245
+ const seedFromCsv = async (model, filePath, sep) => {
239
246
  try {
240
247
  const data = await fsp.readFile(filePath, 'utf8')
241
248
  const clearData = data.replace(/"/g, '').trim()
@@ -260,10 +267,10 @@ const seedFromCsv = async (model, filePath) => {
260
267
  }
261
268
  }
262
269
 
263
- async function runSeed(model, filePath) {
270
+ async function runSeed(model, filePath, sep=',') {
264
271
 
265
272
  if(!filePath || !model) {
266
- console.log('Usage: node seed.js <modelName> <filePath>')
273
+ console.log('Usage: node seed.js <modelName> <filePath> [sep]')
267
274
  process.exit(1)
268
275
  }
269
276
 
@@ -299,7 +306,7 @@ async function runSeed(model, filePath) {
299
306
  await sequelize.sync({ force: true })
300
307
  await sequelize.authenticate()
301
308
  if(ext === '.csv') {
302
- await seedFromCsv(modelObject, filePath)
309
+ await seedFromCsv(modelObject, filePath, sep)
303
310
  }else {
304
311
  await seedFromJson(modelObject, filePath)
305
312
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-sip",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "main": "index.js",
5
5
  "bin": {
6
6
  "create-sip": "create-sip.js"