@bytebrand/export-cars 0.0.2 → 0.0.3

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.
@@ -1,5 +1,4 @@
1
1
  import { ConfigInterface, CronicleJobInterface } from '@bytebrand/chunkable';
2
2
  export declare class ConfigBuilder {
3
- static defaultConfig: ConfigInterface;
4
3
  static mkConfig(job: CronicleJobInterface): ConfigInterface;
5
4
  }
@@ -20,12 +20,6 @@ class ConfigBuilder {
20
20
  remoteDirectory: 'import_dev',
21
21
  baseFileName: 'cars',
22
22
  },
23
- ftpConfig: {
24
- DEFAULT_FTP_HOST: '185.15.211.90',
25
- DEFAULT_FTP_PORT: '21',
26
- DEFAULT_FTP_USER: 'jelastic-ftp',
27
- DEFAULT_FTP_PASS: '7D413EB6L6',
28
- },
29
23
  };
30
24
  const stageConfig = {
31
25
  chunk_limit: job.params.limit,
@@ -42,12 +36,6 @@ class ConfigBuilder {
42
36
  remoteDirectory: 'import_stage',
43
37
  baseFileName: 'cars',
44
38
  },
45
- ftpConfig: {
46
- DEFAULT_FTP_HOST: '185.15.211.90',
47
- DEFAULT_FTP_PORT: '21',
48
- DEFAULT_FTP_USER: 'jelastic-ftp',
49
- DEFAULT_FTP_PASS: '7D413EB6L6',
50
- },
51
39
  };
52
40
  const productionConfig = {
53
41
  chunk_limit: job.params.limit,
@@ -64,22 +52,13 @@ class ConfigBuilder {
64
52
  remoteDirectory: 'import',
65
53
  baseFileName: 'cars',
66
54
  },
67
- ftpConfig: {
68
- DEFAULT_FTP_HOST: '185.15.211.90',
69
- DEFAULT_FTP_PORT: '21',
70
- DEFAULT_FTP_USER: 'jelastic-ftp',
71
- DEFAULT_FTP_PASS: '7D413EB6L6',
72
- },
73
55
  };
74
56
  switch (job.params.environment) {
75
57
  case 'develop':
76
- ConfigBuilder.defaultConfig = developConfig;
77
58
  return developConfig;
78
59
  case 'stage':
79
- ConfigBuilder.defaultConfig = stageConfig;
80
60
  return stageConfig;
81
61
  case 'production':
82
- ConfigBuilder.defaultConfig = productionConfig;
83
62
  return productionConfig;
84
63
  default:
85
64
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigBuilder.js","sourceRoot":"","sources":["../../src/config/ConfigBuilder.ts"],"names":[],"mappings":";;AAEA,MAAa,aAAa;IAExB,MAAM,CAAC,QAAQ,CAAC,GAAyB;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC;QACpC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,cAAc,GAAG,SAAS,CAAC;QAEjC,MAAM,aAAa,GAAoB;YACrC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,WAAW,yBAAyB;aAC5D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,oBAAoB;gBACpC,uBAAuB,EAAE,mBAAmB;gBAC5C,eAAe,EAAE,YAAY;gBAC7B,YAAY,EAAE,MAAM;aACrB;YACD,SAAS,EAAE;gBACT,gBAAgB,EAAE,eAAe;gBACjC,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,cAAc;gBAChC,gBAAgB,EAAE,YAAY;aAC/B;SACF,CAAC;QACF,MAAM,WAAW,GAAoB;YACnC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,SAAS,yBAAyB;aAC1D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,sBAAsB;gBACtC,uBAAuB,EAAE,qBAAqB;gBAC9C,eAAe,EAAE,cAAc;gBAC/B,YAAY,EAAE,MAAM;aACrB;YACD,SAAS,EAAE;gBACT,gBAAgB,EAAE,eAAe;gBACjC,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,cAAc;gBAChC,gBAAgB,EAAE,YAAY;aAC/B;SACF,CAAC;QACF,MAAM,gBAAgB,GAAoB;YACxC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,cAAc,yBAAyB;aAC/D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,qBAAqB;gBACrC,uBAAuB,EAAE,oBAAoB;gBAC7C,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,MAAM;aACrB;YACD,SAAS,EAAE;gBACT,gBAAgB,EAAE,eAAe;gBACjC,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,cAAc;gBAChC,gBAAgB,EAAE,YAAY;aAC/B;SACF,CAAC;QAEF,QAAQ,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;YAC9B,KAAK,SAAS;gBACZ,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC;gBAC5C,OAAO,aAAa,CAAC;YACvB,KAAK,OAAO;gBACV,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC;gBAC1C,OAAO,WAAW,CAAC;YACrB,KAAK,YAAY;gBACf,aAAa,CAAC,aAAa,GAAG,gBAAgB,CAAC;gBAC/C,OAAO,gBAAgB,CAAC;YAC1B;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;CACF;AAxFD,sCAwFC"}
1
+ {"version":3,"file":"ConfigBuilder.js","sourceRoot":"","sources":["../../src/config/ConfigBuilder.ts"],"names":[],"mappings":";;AAEA,MAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAyB;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC;QACpC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,cAAc,GAAG,SAAS,CAAC;QAEjC,MAAM,aAAa,GAAoB;YACrC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,WAAW,yBAAyB;aAC5D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,oBAAoB;gBACpC,uBAAuB,EAAE,mBAAmB;gBAC5C,eAAe,EAAE,YAAY;gBAC7B,YAAY,EAAE,MAAM;aACrB;SACF,CAAC;QACF,MAAM,WAAW,GAAoB;YACnC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,SAAS,yBAAyB;aAC1D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,sBAAsB;gBACtC,uBAAuB,EAAE,qBAAqB;gBAC9C,eAAe,EAAE,cAAc;gBAC/B,YAAY,EAAE,MAAM;aACrB;SACF,CAAC;QACF,MAAM,gBAAgB,GAAoB;YACxC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;YAC7B,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;YACnC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,wBAAwB,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe,cAAc,yBAAyB;aAC/D;YACD,MAAM,EAAE;gBACN,cAAc,EAAE,qBAAqB;gBACrC,uBAAuB,EAAE,oBAAoB;gBAC7C,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,MAAM;aACrB;SACF,CAAC;QAEF,QAAQ,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;YAC9B,KAAK,SAAS;gBACZ,OAAO,aAAa,CAAC;YACvB,KAAK,OAAO;gBACV,OAAO,WAAW,CAAC;YACrB,KAAK,YAAY;gBACf,OAAO,gBAAgB,CAAC;YAC1B;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;CACF;AAlED,sCAkEC"}
package/dist/index.js CHANGED
@@ -11,53 +11,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  require("reflect-metadata");
12
12
  const chunkable_1 = require("@bytebrand/chunkable");
13
13
  const config_1 = require("./config");
14
- const index_1 = require("./modules/car-loader/index");
15
- const acrhiver_1 = require("./modules/acrhiver");
16
- const car_exporter_1 = require("./modules/car-exporter");
17
- const ftp_1 = require("@bytebrand/chunkable/dist/ftp");
18
14
  const rl = require('readline').createInterface({ input: process.stdin });
19
15
  rl.on('line', (line) => __awaiter(this, void 0, void 0, function* () {
20
16
  try {
21
17
  const job = {
22
- id: 'sdsdsd',
18
+ id: '1',
23
19
  params: {
24
- apikey: 'AIzaSyD57yo222EMQjyHQKCDsLILrHh3AzOGtmU',
25
- environment: 'production',
26
- // apikey: 'AIzaSyC-jmLAkt2pVO0t-beLIuZJwR4jiGpzYyU',
27
- // environment: 'develop',
28
- limit: 1000,
20
+ apikey: 'AIzaSyC-jmLAkt2pVO0t-beLIuZJwR4jiGpzYyU',
21
+ environment: 'develop',
22
+ limit: 500,
29
23
  },
30
24
  };
31
25
  // const job: ChunkableInterfaces.CronicleJobInterface = JSON.parse(line);
32
26
  process.stdout.write(`Running job: ${job.id}: ${JSON.stringify(job)}\n`);
33
27
  const config = config_1.ConfigBuilder.mkConfig(job);
34
- chunkable_1.FTP.initFTPConnections(config.ftpConfig, 'general').then(() => __awaiter(this, void 0, void 0, function* () {
35
- const loader = index_1.getLoader(config);
36
- const archiver = acrhiver_1.getArhiver(config);
37
- const exporter = car_exporter_1.getExporter(Object.assign(config, { eventEmitter: ftp_1.getEventEmitter('general') }));
38
- loader.onFinish((chunks) => {
39
- process.stdout.write(`${JSON.stringify({ progress: 0.33 })}\n`);
40
- return archiver.start(chunks);
41
- });
42
- archiver.onFinish((chunks) => {
43
- loader.clear();
44
- process.stdout.write(`${JSON.stringify({ progress: 0.66 })}\n`);
45
- return exporter.start(chunks);
46
- });
47
- loader.start();
48
- exporter.onChunk((chunk) => {
49
- archiver.clear();
50
- process.stdout.write(`${JSON.stringify({ progress: 1 })}\n`);
51
- process.stdout.write(`${JSON.stringify({ complete: 1, code: 0 })}\n`);
52
- process.exit();
53
- // rl.close();
54
- return Promise.resolve(true);
55
- });
56
- }));
57
- // rl.close();
28
+ const loader = new chunkable_1.Loaders.CarBasicDataCarsLoader({
29
+ pathesConfig: config.pathes,
30
+ limit: config.chunk_limit,
31
+ cbdUrl: config.projectRelatedParameters.cbdUrl,
32
+ apikey: config.projectRelatedParameters.apikey,
33
+ });
34
+ loader.onChunk((chunk) => {
35
+ console.log(chunk);
36
+ return Promise.resolve();
37
+ });
38
+ yield loader.start();
39
+ process.stdout.write(`${JSON.stringify({ complete: 1, code: 0 })}\n`);
40
+ rl.close();
58
41
  }
59
42
  catch (e) {
60
- // rl.close();
61
43
  process.stderr.write(`${JSON.stringify({ complete: 1, code: 1, description: e.message })}\n`);
62
44
  }
63
45
  }));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,4BAA0B;AAC1B,oDAK8B;AAC9B,qCAAyC;AAEzC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAEzE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAO,IAAY,EAAE,EAAE;IACnC,IAAI;QACF,MAAM,GAAG,GAA6C;YACpD,EAAE,EAAE,GAAG;YACP,MAAM,EAAE;gBACN,MAAM,EAAE,yCAAyC;gBACjD,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,GAAG;aACX;SACF,CAAC;QACF,0EAA0E;QAE1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAwC,sBAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAsB,IAAI,mBAAO,CAAC,sBAAsB,CAAC;YACnE,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM;YAC9C,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtE,EAAE,CAAC,KAAK,EAAE,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KAC/F;AACH,CAAC,CAAA,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytebrand/export-cars",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Run python ML script for find good and bad prices on car list",
5
5
  "author": "Bytebrand <info@bytebrand.net>",
6
6
  "license": "UNLICENSED",
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "@bytebrand/car-basic-data-scope": "~2.0.11",
17
17
  "@bytebrand/car-schema": "~0.14.12",
18
- "@bytebrand/chunkable": "^2.1.2",
18
+ "@bytebrand/chunkable": "^2.1.3",
19
19
  "@bytebrand/event-emitter": "^1.0.8",
20
20
  "@bytebrand/ftp-queue-subscriber": "^1.0.16",
21
21
  "basic-ftp": "^3.1.1",
@@ -38,5 +38,5 @@
38
38
  "tslint-eslint-rules": "^5.1.0",
39
39
  "typescript": "^3.2.4"
40
40
  },
41
- "gitHead": "3c136f2e0a3de5c31e62651b8d3de1b02d7e4723"
41
+ "gitHead": "d20a1acebdf3cec60b085eb7d4341286fcd3b427"
42
42
  }
package/readme.md CHANGED
@@ -1,7 +1,11 @@
1
- start script
1
+ ###start script
2
2
 
3
- ``node index.js``
3
+ ``./node_modules/.bin/ts-node src/index.ts``
4
4
 
5
5
  after it type next line
6
6
 
7
- ``{"id": 1, "params": {"apikey": "", "environment": "develop", "limit": "200", "ftpHost": "", "ftpUser": "", "ftpPassword": ""}}``
7
+ ``{"id": 1, "params": {}}``
8
+
9
+ ###start script on Cronicle
10
+
11
+ ``node node_modules/@bytebrand/cars-export/dist/index.js``
@@ -1,7 +1,6 @@
1
1
  import { ConfigInterface, CronicleJobInterface } from '@bytebrand/chunkable';
2
2
 
3
3
  export class ConfigBuilder {
4
- static defaultConfig: ConfigInterface;
5
4
  static mkConfig(job: CronicleJobInterface): ConfigInterface {
6
5
  const developRoot = 'autode-dev.de';
7
6
  const stageRoot = 'autode-stage.de';
@@ -22,12 +21,6 @@ export class ConfigBuilder {
22
21
  remoteDirectory: 'import_dev',
23
22
  baseFileName: 'cars',
24
23
  },
25
- ftpConfig: {
26
- DEFAULT_FTP_HOST: '185.15.211.90',
27
- DEFAULT_FTP_PORT: '21',
28
- DEFAULT_FTP_USER: 'jelastic-ftp',
29
- DEFAULT_FTP_PASS: '7D413EB6L6',
30
- },
31
24
  };
32
25
  const stageConfig: ConfigInterface = {
33
26
  chunk_limit: job.params.limit,
@@ -44,12 +37,6 @@ export class ConfigBuilder {
44
37
  remoteDirectory: 'import_stage',
45
38
  baseFileName: 'cars',
46
39
  },
47
- ftpConfig: {
48
- DEFAULT_FTP_HOST: '185.15.211.90',
49
- DEFAULT_FTP_PORT: '21',
50
- DEFAULT_FTP_USER: 'jelastic-ftp',
51
- DEFAULT_FTP_PASS: '7D413EB6L6',
52
- },
53
40
  };
54
41
  const productionConfig: ConfigInterface = {
55
42
  chunk_limit: job.params.limit,
@@ -66,23 +53,14 @@ export class ConfigBuilder {
66
53
  remoteDirectory: 'import',
67
54
  baseFileName: 'cars',
68
55
  },
69
- ftpConfig: {
70
- DEFAULT_FTP_HOST: '185.15.211.90',
71
- DEFAULT_FTP_PORT: '21',
72
- DEFAULT_FTP_USER: 'jelastic-ftp',
73
- DEFAULT_FTP_PASS: '7D413EB6L6',
74
- },
75
56
  };
76
57
 
77
58
  switch (job.params.environment) {
78
59
  case 'develop':
79
- ConfigBuilder.defaultConfig = developConfig;
80
60
  return developConfig;
81
61
  case 'stage':
82
- ConfigBuilder.defaultConfig = stageConfig;
83
62
  return stageConfig;
84
63
  case 'production':
85
- ConfigBuilder.defaultConfig = productionConfig;
86
64
  return productionConfig;
87
65
  default:
88
66
  return null;
package/src/index.ts CHANGED
@@ -1,23 +1,22 @@
1
1
  import 'reflect-metadata';
2
- import { Interfaces as ChunkableInterfaces, FTP as ChunkableFtp, AbstractChunkable } from '@bytebrand/chunkable';
2
+ import {
3
+ Interfaces as ChunkableInterfaces,
4
+ AbstractChunkable,
5
+ Loaders,
6
+ ConfigInterface,
7
+ } from '@bytebrand/chunkable';
3
8
  import { ConfigBuilder } from './config';
4
- import { getLoader } from './modules/car-loader/index';
5
- import { getArhiver } from './modules/acrhiver';
6
- import { getExporter } from './modules/car-exporter';
7
- import { getEventEmitter } from '@bytebrand/chunkable/dist/ftp';
8
9
 
9
10
  const rl = require('readline').createInterface({ input: process.stdin });
10
11
 
11
12
  rl.on('line', async (line: string) => {
12
13
  try {
13
14
  const job: ChunkableInterfaces.CronicleJobInterface = {
14
- id: 'sdsdsd',
15
+ id: '1',
15
16
  params: {
16
- apikey: 'AIzaSyD57yo222EMQjyHQKCDsLILrHh3AzOGtmU',
17
- environment: 'production',
18
- // apikey: 'AIzaSyC-jmLAkt2pVO0t-beLIuZJwR4jiGpzYyU',
19
- // environment: 'develop',
20
- limit: 1000,
17
+ apikey: 'AIzaSyC-jmLAkt2pVO0t-beLIuZJwR4jiGpzYyU',
18
+ environment: 'develop',
19
+ limit: 500,
21
20
  },
22
21
  };
23
22
  // const job: ChunkableInterfaces.CronicleJobInterface = JSON.parse(line);
@@ -26,37 +25,20 @@ rl.on('line', async (line: string) => {
26
25
 
27
26
  const config: ChunkableInterfaces.ConfigInterface = ConfigBuilder.mkConfig(job);
28
27
 
29
- ChunkableFtp.initFTPConnections(config.ftpConfig, 'general').then(async () => {
30
- const loader: AbstractChunkable = getLoader(config);
31
- const archiver: AbstractChunkable = getArhiver(config);
32
- const exporter: AbstractChunkable = getExporter(
33
- Object.assign(config, { eventEmitter: getEventEmitter('general') }),
34
- );
35
-
36
- loader.onFinish((chunks: ChunkableInterfaces.ChunkInterface[]) => {
37
- process.stdout.write(`${JSON.stringify({ progress: 0.33 })}\n`);
38
- return archiver.start(chunks);
39
- });
40
- archiver.onFinish((chunks: ChunkableInterfaces.ChunkInterface[]) => {
41
- loader.clear();
42
- process.stdout.write(`${JSON.stringify({ progress: 0.66 })}\n`);
43
- return exporter.start(chunks);
44
- });
45
- loader.start();
46
-
47
- exporter.onChunk((chunk) => {
48
- archiver.clear();
49
- process.stdout.write(`${JSON.stringify({ progress: 1 })}\n`);
50
-
51
- process.stdout.write(`${JSON.stringify({ complete: 1, code: 0 })}\n`);
52
- process.exit();
53
- // rl.close();
54
- return Promise.resolve(true);
55
- });
28
+ const loader: AbstractChunkable = new Loaders.CarBasicDataCarsLoader({
29
+ pathesConfig: config.pathes,
30
+ limit: config.chunk_limit,
31
+ cbdUrl: config.projectRelatedParameters.cbdUrl,
32
+ apikey: config.projectRelatedParameters.apikey,
33
+ });
34
+ loader.onChunk((chunk: ChunkableInterfaces.ChunkInterface) => {
35
+ console.log(chunk);
36
+ return Promise.resolve();
56
37
  });
57
- // rl.close();
38
+ await loader.start();
39
+ process.stdout.write(`${JSON.stringify({ complete: 1, code: 0 })}\n`);
40
+ rl.close();
58
41
  } catch (e) {
59
- // rl.close();
60
42
  process.stderr.write(`${JSON.stringify({ complete: 1, code: 1, description: e.message })}\n`);
61
43
  }
62
44
  });
File without changes
@@ -1,32 +0,0 @@
1
- import { AbstractChunkable, Interfaces } from '@bytebrand/chunkable';
2
- import * as tar from 'tar';
3
- import moment from 'moment';
4
- import fs from 'fs';
5
-
6
- export class TarArchiver extends AbstractChunkable {
7
- doChunk(chunk?: Interfaces.ChunkInterface): Promise<boolean> {
8
- throw new Error('This converter works with full data use doStart');
9
- }
10
-
11
- async clear() {
12
- for (const chunk of this.chunks) {
13
- fs.unlinkSync(this.getChunkPath(chunk));
14
- }
15
- }
16
-
17
- doStart(chunks?: Interfaces.ChunkInterface[]) {
18
- const archiveChunk = this.createChunk(moment().format('DD_MM_YY'), 'tgz');
19
- archiveChunk.currentLocation = this.pathesConfig.localDirectory;
20
- const options: tar.FileOptions & tar.CreateOptions = {
21
- gzip: true,
22
- file: this.getChunkPath(archiveChunk),
23
- cwd: this.pathesConfig.localDirectory,
24
- };
25
- const files = chunks.map((chunk) => this.getChunkFileName(chunk));
26
-
27
- return (tar.create(options, files) as any).then(() => {
28
- this.chunks.push(archiveChunk);
29
- return this.onFinishCallback([ archiveChunk ]);
30
- });
31
- }
32
- }
@@ -1,6 +0,0 @@
1
- import { TarArchiver } from './TarArchiver';
2
- import { AbstractChunkable, ConfigInterface, ChunkableFactoryInterface } from '@bytebrand/chunkable';
3
-
4
- export const getArhiver: ChunkableFactoryInterface = (config: ConfigInterface) => {
5
- return (new TarArchiver({ pathesConfig: config.pathes, limit: config.chunk_limit }) as AbstractChunkable);
6
- };
@@ -1,11 +0,0 @@
1
- import { Exporters, ConfigInterface, ChunkableFactoryInterface, FTP } from '@bytebrand/chunkable';
2
- import { EventEmitter } from '@bytebrand/event-emitter';
3
-
4
- export const getExporter: ChunkableFactoryInterface = (
5
- config: ConfigInterface & { eventEmitter: EventEmitter<any> },
6
- ) => {
7
- return new Exporters.FtpCarsJsonExporter(config.eventEmitter, {
8
- pathesConfig: config.pathes,
9
- limit: config.chunk_limit,
10
- });
11
- };
@@ -1,10 +0,0 @@
1
- import { Loaders, ConfigInterface, ChunkableFactoryInterface, FTP } from '@bytebrand/chunkable';
2
-
3
- export const getLoader: ChunkableFactoryInterface = (config: ConfigInterface) => {
4
- return new Loaders.CarBasicDataCarsLoader({
5
- pathesConfig: config.pathes,
6
- limit: config.chunk_limit,
7
- cbdUrl: config.projectRelatedParameters.cbdUrl,
8
- apikey: config.projectRelatedParameters.apikey,
9
- });
10
- };