@solidstarters/solid-core 1.2.73 → 1.2.75

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 (96) hide show
  1. package/dist/controllers/export-template.controller.d.ts +36 -0
  2. package/dist/controllers/export-template.controller.d.ts.map +1 -0
  3. package/dist/controllers/export-template.controller.js +182 -0
  4. package/dist/controllers/export-template.controller.js.map +1 -0
  5. package/dist/controllers/export-transaction.controller.d.ts +33 -0
  6. package/dist/controllers/export-transaction.controller.d.ts.map +1 -0
  7. package/dist/controllers/export-transaction.controller.js +150 -0
  8. package/dist/controllers/export-transaction.controller.js.map +1 -0
  9. package/dist/dtos/create-export-template.dto.d.ts +9 -0
  10. package/dist/dtos/create-export-template.dto.d.ts.map +1 -0
  11. package/dist/dtos/create-export-template.dto.js +55 -0
  12. package/dist/dtos/create-export-template.dto.js.map +1 -0
  13. package/dist/dtos/create-export-transaction.dto.d.ts +9 -0
  14. package/dist/dtos/create-export-transaction.dto.d.ts.map +1 -0
  15. package/dist/dtos/create-export-transaction.dto.js +50 -0
  16. package/dist/dtos/create-export-transaction.dto.js.map +1 -0
  17. package/dist/dtos/update-export-template.dto.d.ts +10 -0
  18. package/dist/dtos/update-export-template.dto.d.ts.map +1 -0
  19. package/dist/dtos/update-export-template.dto.js +62 -0
  20. package/dist/dtos/update-export-template.dto.js.map +1 -0
  21. package/dist/dtos/update-export-transaction.dto.d.ts +9 -0
  22. package/dist/dtos/update-export-transaction.dto.d.ts.map +1 -0
  23. package/dist/dtos/update-export-transaction.dto.js +53 -0
  24. package/dist/dtos/update-export-transaction.dto.js.map +1 -0
  25. package/dist/entities/export-template.entity.d.ts +10 -0
  26. package/dist/entities/export-template.entity.d.ts.map +1 -0
  27. package/dist/entities/export-template.entity.js +53 -0
  28. package/dist/entities/export-template.entity.js.map +1 -0
  29. package/dist/entities/export-transaction.entity.d.ts +10 -0
  30. package/dist/entities/export-transaction.entity.d.ts.map +1 -0
  31. package/dist/entities/export-transaction.entity.js +51 -0
  32. package/dist/entities/export-transaction.entity.js.map +1 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interfaces.d.ts +2 -0
  38. package/dist/interfaces.d.ts.map +1 -1
  39. package/dist/interfaces.js.map +1 -1
  40. package/dist/seeders/seed-data/solid-core-metadata.json +183 -1
  41. package/dist/services/csv.service.d.ts +6 -0
  42. package/dist/services/csv.service.d.ts.map +1 -0
  43. package/dist/services/csv.service.js +48 -0
  44. package/dist/services/csv.service.js.map +1 -0
  45. package/dist/services/excel.service.d.ts +6 -0
  46. package/dist/services/excel.service.d.ts.map +1 -0
  47. package/dist/services/excel.service.js +90 -0
  48. package/dist/services/excel.service.js.map +1 -0
  49. package/dist/services/export-template.service.d.ts +27 -0
  50. package/dist/services/export-template.service.d.ts.map +1 -0
  51. package/dist/services/export-template.service.js +79 -0
  52. package/dist/services/export-template.service.js.map +1 -0
  53. package/dist/services/export-transaction.service.d.ts +50 -0
  54. package/dist/services/export-transaction.service.d.ts.map +1 -0
  55. package/dist/services/export-transaction.service.js +191 -0
  56. package/dist/services/export-transaction.service.js.map +1 -0
  57. package/dist/services/file.service.d.ts +3 -0
  58. package/dist/services/file.service.d.ts.map +1 -1
  59. package/dist/services/file.service.js +18 -2
  60. package/dist/services/file.service.js.map +1 -1
  61. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +4 -2
  62. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  63. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +4 -1
  64. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  65. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -3
  66. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  67. package/dist/services/mediaStorageProviders/file-storage-provider.js +23 -3
  68. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  69. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  70. package/dist/services/solid-introspect.service.js.map +1 -1
  71. package/dist/solid-core.module.d.ts.map +1 -1
  72. package/dist/solid-core.module.js +17 -1
  73. package/dist/solid-core.module.js.map +1 -1
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +3 -1
  76. package/src/controllers/export-template.controller.ts +98 -0
  77. package/src/controllers/export-transaction.controller.ts +76 -0
  78. package/src/dtos/create-export-template.dto.ts +27 -0
  79. package/src/dtos/create-export-transaction.dto.ts +26 -0
  80. package/src/dtos/update-export-template.dto.ts +33 -0
  81. package/src/dtos/update-export-transaction.dto.ts +28 -0
  82. package/src/entities/export-template.entity.ts +20 -0
  83. package/src/entities/export-transaction.entity.ts +22 -0
  84. package/src/index.ts +2 -0
  85. package/src/interfaces.ts +2 -0
  86. package/src/seeders/seed-data/solid-core-metadata.json +183 -1
  87. package/src/services/csv.service.ts +41 -0
  88. package/src/services/excel.service.ts +105 -0
  89. package/src/services/export-template.service.ts +71 -0
  90. package/src/services/export-transaction.service.ts +208 -0
  91. package/src/services/export_issues.txt +6 -0
  92. package/src/services/file.service.ts +26 -1
  93. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +9 -6
  94. package/src/services/mediaStorageProviders/file-storage-provider.ts +29 -7
  95. package/src/services/solid-introspect.service.ts +1 -0
  96. package/src/solid-core.module.ts +18 -1
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var CsvService_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CsvService = void 0;
11
+ const stream_1 = require("stream");
12
+ const fast_csv_1 = require("fast-csv");
13
+ const common_1 = require("@nestjs/common");
14
+ let CsvService = CsvService_1 = class CsvService {
15
+ constructor() {
16
+ this.logger = new common_1.Logger(CsvService_1.name);
17
+ }
18
+ async createCsvStream(getDataRecords, chunkSize) {
19
+ const passThrough = new stream_1.PassThrough();
20
+ const csvStream = (0, fast_csv_1.format)({ headers: true });
21
+ csvStream.pipe(passThrough);
22
+ let chunkIndex = 0;
23
+ try {
24
+ while (true) {
25
+ const records = await getDataRecords(chunkIndex, chunkSize);
26
+ if (records.length === 0)
27
+ break;
28
+ for (const record of records) {
29
+ csvStream.write(record);
30
+ }
31
+ chunkIndex++;
32
+ this.logger.debug(`✅ Chunk ${chunkIndex} written to CSV`);
33
+ }
34
+ csvStream.end();
35
+ }
36
+ catch (error) {
37
+ this.logger.error(`❌ Error writing CSV: ${error.message}`);
38
+ passThrough.destroy(error);
39
+ throw error;
40
+ }
41
+ return passThrough;
42
+ }
43
+ };
44
+ exports.CsvService = CsvService;
45
+ exports.CsvService = CsvService = CsvService_1 = __decorate([
46
+ (0, common_1.Injectable)()
47
+ ], CsvService);
48
+ //# sourceMappingURL=csv.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.service.js","sourceRoot":"","sources":["../../src/services/csv.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,mCAA+C;AAC/C,uCAAkC;AAClC,2CAAoD;AAG7C,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAAhB;QACG,WAAM,GAAG,IAAI,eAAM,CAAC,YAAU,CAAC,IAAI,CAAC,CAAC;IAkC/C,CAAC;IAjCQ,KAAK,CAAC,eAAe,CAC1B,cAAyE,EACzE,SAAiB;QAEjB,MAAM,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAA,iBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAEhC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;gBAED,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,iBAAiB,CAAC,CAAC;YAC5D,CAAC;YAED,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAA;AAnCY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAmCtB"}
@@ -0,0 +1,6 @@
1
+ import { Readable } from 'stream';
2
+ export declare class ExcelService {
3
+ private logger;
4
+ createExcelStream(getDataRecords: (chunkIndex: number, chunkSize: number) => Promise<any[]>, chunkSize: number): Promise<Readable>;
5
+ }
6
+ //# sourceMappingURL=excel.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel.service.d.ts","sourceRoot":"","sources":["../../src/services/excel.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAG/C,qBACa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAiC;IAsDlC,iBAAiB,CAC5B,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EACzE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;CAwCrB"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var ExcelService_1;
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.ExcelService = void 0;
44
+ const common_1 = require("@nestjs/common");
45
+ const ExcelJS = __importStar(require("exceljs"));
46
+ const stream_1 = require("stream");
47
+ let ExcelService = ExcelService_1 = class ExcelService {
48
+ constructor() {
49
+ this.logger = new common_1.Logger(ExcelService_1.name);
50
+ }
51
+ async createExcelStream(getDataRecords, chunkSize) {
52
+ const passThrough = new stream_1.PassThrough();
53
+ try {
54
+ const workbook = new ExcelJS.stream.xlsx.WorkbookWriter({ stream: passThrough });
55
+ const worksheet = workbook.addWorksheet('Data');
56
+ let chunkIndex = 0;
57
+ let isHeaderWritten = false;
58
+ while (true) {
59
+ const records = await getDataRecords(chunkIndex, chunkSize);
60
+ if (records.length === 0)
61
+ break;
62
+ if (!isHeaderWritten) {
63
+ worksheet.columns = Object.keys(records[0]).map((key) => ({
64
+ header: key.toUpperCase(),
65
+ key: key,
66
+ width: 20,
67
+ }));
68
+ isHeaderWritten = true;
69
+ }
70
+ records.forEach((item) => {
71
+ worksheet.addRow(item).commit();
72
+ });
73
+ chunkIndex++;
74
+ this.logger.debug(`✅ Chunk ${chunkIndex} written to Excel`);
75
+ }
76
+ await workbook.commit();
77
+ }
78
+ catch (error) {
79
+ this.logger.error(`❌ Error writing Excel: ${error.message}`);
80
+ passThrough.destroy(error);
81
+ throw error;
82
+ }
83
+ return passThrough;
84
+ }
85
+ };
86
+ exports.ExcelService = ExcelService;
87
+ exports.ExcelService = ExcelService = ExcelService_1 = __decorate([
88
+ (0, common_1.Injectable)()
89
+ ], ExcelService);
90
+ //# sourceMappingURL=excel.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel.service.js","sourceRoot":"","sources":["../../src/services/excel.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,iDAAmC;AACnC,mCAA+C;AAIxC,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAAlB;QACG,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAiGjD,CAAC;IA3CQ,KAAK,CAAC,iBAAiB,CAC5B,cAAyE,EACzE,SAAiB;QAEjB,MAAM,WAAW,GAAG,IAAI,oBAAW,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEhD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAEhC,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxD,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE;wBACzB,GAAG,EAAE,GAAG;wBACR,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC,CAAC;oBACJ,eAAe,GAAG,IAAI,CAAC;gBACzB,CAAC;gBAED,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAClC,CAAC,CAAC,CAAC;gBAEH,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,mBAAmB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;QAE1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CAEF,CAAA;AAlGY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAkGxB"}
@@ -0,0 +1,27 @@
1
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
2
+ import { EntityManager, Repository } from 'typeorm';
3
+ import { ConfigService } from '@nestjs/config';
4
+ import { CrudHelperService } from 'src/services/crud-helper.service';
5
+ import { CRUDService } from 'src/services/crud.service';
6
+ import { FileService } from 'src/services/file.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { ExportTransaction } from 'src/entities/export-transaction.entity';
10
+ import { ExportTemplate } from '../entities/export-template.entity';
11
+ import { ExportTransactionFileInfo, ExportTransactionService } from './export-transaction.service';
12
+ export declare class ExportTemplateService extends CRUDService<ExportTemplate> {
13
+ readonly modelMetadataService: ModelMetadataService;
14
+ readonly moduleMetadataService: ModuleMetadataService;
15
+ readonly configService: ConfigService;
16
+ readonly fileService: FileService;
17
+ readonly discoveryService: DiscoveryService;
18
+ readonly crudHelperService: CrudHelperService;
19
+ readonly entityManager: EntityManager;
20
+ readonly repo: Repository<ExportTemplate>;
21
+ readonly exportTransactionService: ExportTransactionService;
22
+ readonly moduleRef: ModuleRef;
23
+ startExportSync(id: number): Promise<ExportTransactionFileInfo>;
24
+ startExportAsync(id: number): Promise<ExportTransaction>;
25
+ constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, entityManager: EntityManager, repo: Repository<ExportTemplate>, exportTransactionService: ExportTransactionService, moduleRef: ModuleRef);
26
+ }
27
+ //# sourceMappingURL=export-template.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-template.service.d.ts","sourceRoot":"","sources":["../../src/services/export-template.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAI7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEnG,qBACa,qBAAsB,SAAQ,WAAW,CAAC,cAAc,CAAC;IAiClE,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAE7C,QAAQ,CAAC,aAAa,EAAE,aAAa;IAErC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC;IACzC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB;IAC3D,QAAQ,CAAC,SAAS,EAAE,SAAS;IA3CzB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAe/D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAiBnD,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EAEpC,aAAa,EAAE,aAAa,EAE5B,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,EAChC,wBAAwB,EAAE,wBAAwB,EAClD,SAAS,EAAE,SAAS;CAIhC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ExportTemplateService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
18
+ const typeorm_1 = require("@nestjs/typeorm");
19
+ const typeorm_2 = require("typeorm");
20
+ const config_1 = require("@nestjs/config");
21
+ const crud_helper_service_1 = require("./crud-helper.service");
22
+ const crud_service_1 = require("./crud.service");
23
+ const file_service_1 = require("./file.service");
24
+ const model_metadata_service_1 = require("./model-metadata.service");
25
+ const module_metadata_service_1 = require("./module-metadata.service");
26
+ const export_template_entity_1 = require("../entities/export-template.entity");
27
+ const export_transaction_service_1 = require("./export-transaction.service");
28
+ let ExportTemplateService = class ExportTemplateService extends crud_service_1.CRUDService {
29
+ async startExportSync(id) {
30
+ const exportTransaction = await this.exportTransactionService.toDto({
31
+ datetime: new Date(),
32
+ status: 'started',
33
+ exportTemplateId: id,
34
+ });
35
+ const exportTransactionEntity = await this.exportTransactionService.create(exportTransaction);
36
+ const exportFileInfo = await this.exportTransactionService.triggerExportSync(exportTransactionEntity.id);
37
+ return exportFileInfo;
38
+ }
39
+ async startExportAsync(id) {
40
+ const exportTransaction = await this.exportTransactionService.toDto({
41
+ datetime: new Date(),
42
+ status: 'started',
43
+ exportTemplateId: id,
44
+ });
45
+ const exportTransactionEntity = await this.exportTransactionService.create(exportTransaction);
46
+ this.exportTransactionService.triggerExportAsync(exportTransactionEntity.id);
47
+ return exportTransactionEntity;
48
+ }
49
+ constructor(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, exportTransactionService, moduleRef) {
50
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'exportTemplate', 'solid-core', moduleRef);
51
+ this.modelMetadataService = modelMetadataService;
52
+ this.moduleMetadataService = moduleMetadataService;
53
+ this.configService = configService;
54
+ this.fileService = fileService;
55
+ this.discoveryService = discoveryService;
56
+ this.crudHelperService = crudHelperService;
57
+ this.entityManager = entityManager;
58
+ this.repo = repo;
59
+ this.exportTransactionService = exportTransactionService;
60
+ this.moduleRef = moduleRef;
61
+ }
62
+ };
63
+ exports.ExportTemplateService = ExportTemplateService;
64
+ exports.ExportTemplateService = ExportTemplateService = __decorate([
65
+ (0, common_1.Injectable)(),
66
+ __param(6, (0, typeorm_1.InjectEntityManager)()),
67
+ __param(7, (0, typeorm_1.InjectRepository)(export_template_entity_1.ExportTemplate, 'default')),
68
+ __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
69
+ module_metadata_service_1.ModuleMetadataService,
70
+ config_1.ConfigService,
71
+ file_service_1.FileService,
72
+ core_1.DiscoveryService,
73
+ crud_helper_service_1.CrudHelperService,
74
+ typeorm_2.EntityManager,
75
+ typeorm_2.Repository,
76
+ export_transaction_service_1.ExportTransactionService,
77
+ core_1.ModuleRef])
78
+ ], ExportTemplateService);
79
+ //# sourceMappingURL=export-template.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-template.service.js","sourceRoot":"","sources":["../../src/services/export-template.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAA2D;AAC3D,6CAAwE;AACxE,qCAAoD;AAEpD,2CAA+C;AAC/C,+DAAqE;AACrE,iDAAwD;AACxD,iDAAwD;AAGxD,qEAA2E;AAC3E,uEAA6E;AAM7E,+EAAoE;AACpE,6EAAmG;AAG5F,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAA2B;IACpE,KAAK,CAAC,eAAe,CAAC,EAAU;QAE9B,MAAM,iBAAiB,GAAgC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAC/F,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,MAAM,EAAE,SAAS;YACjB,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAG9F,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAEzG,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAE/B,MAAM,iBAAiB,GAAgC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAC/F,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,MAAM,EAAE,SAAS;YACjB,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAG9F,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAG7E,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,YACW,oBAA0C,EAC1C,qBAA4C,EAC5C,aAA4B,EAC5B,WAAwB,EACxB,gBAAkC,EAClC,iBAAoC,EAEpC,aAA4B,EAE5B,IAAgC,EAChC,wBAAkD,EAClD,SAAoB;QAE9B,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAC,SAAS,CAAC,CAAC;QAbxK,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,kBAAa,GAAb,aAAa,CAAe;QAE5B,SAAI,GAAJ,IAAI,CAA4B;QAChC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,cAAS,GAAT,SAAS,CAAW;IAGhC,CAAC;CACD,CAAA;AAhDY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAwCR,WAAA,IAAA,6BAAmB,GAAE,CAAA;IAErB,WAAA,IAAA,0BAAgB,EAAC,uCAAc,EAAE,SAAS,CAAC,CAAA;qCARb,6CAAoB;QACnB,+CAAqB;QAC7B,sBAAa;QACf,0BAAW;QACN,uBAAgB;QACf,uCAAiB;QAErB,uBAAa;QAEtB,oBAAU;QACU,qDAAwB;QACvC,gBAAS;GA5CpB,qBAAqB,CAgDjC"}
@@ -0,0 +1,50 @@
1
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
2
+ import { EntityManager, Repository } from 'typeorm';
3
+ import { ConfigService } from '@nestjs/config';
4
+ import { CrudHelperService } from 'src/services/crud-helper.service';
5
+ import { CRUDService } from 'src/services/crud.service';
6
+ import { FileService } from 'src/services/file.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { CreateExportTransactionDto } from 'src/dtos/create-export-transaction.dto';
10
+ import { FieldMetadata } from 'src/entities/field-metadata.entity';
11
+ import { Readable } from 'stream';
12
+ import { ExportTransaction } from '../entities/export-transaction.entity';
13
+ import { CsvService } from './csv.service';
14
+ import { ExcelService } from './excel.service';
15
+ import { SolidIntrospectService } from './solid-introspect.service';
16
+ export interface ExportTransactionFileInfo {
17
+ exportStream: Readable;
18
+ fileName: string;
19
+ mimeType: string;
20
+ exportTransaction: ExportTransaction;
21
+ }
22
+ export declare class ExportTransactionService extends CRUDService<ExportTransaction> {
23
+ readonly modelMetadataService: ModelMetadataService;
24
+ readonly moduleMetadataService: ModuleMetadataService;
25
+ readonly configService: ConfigService;
26
+ readonly fileService: FileService;
27
+ readonly discoveryService: DiscoveryService;
28
+ readonly crudHelperService: CrudHelperService;
29
+ readonly entityManager: EntityManager;
30
+ readonly repo: Repository<ExportTransaction>;
31
+ readonly introspectService: SolidIntrospectService;
32
+ readonly excelService: ExcelService;
33
+ readonly csvService: CsvService;
34
+ readonly fieldRepo: Repository<FieldMetadata>;
35
+ readonly moduleRef: ModuleRef;
36
+ private logger;
37
+ constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, entityManager: EntityManager, repo: Repository<ExportTransaction>, introspectService: SolidIntrospectService, excelService: ExcelService, csvService: CsvService, fieldRepo: Repository<FieldMetadata>, moduleRef: ModuleRef);
38
+ triggerExportSync(id: number): Promise<ExportTransactionFileInfo>;
39
+ triggerExportAsync(id: number): Promise<void>;
40
+ private loadExportTransaction;
41
+ private updateExportTransaction;
42
+ private getExportStreamDetails;
43
+ private getExportStream;
44
+ private storeExportStream;
45
+ private getFileName;
46
+ private getMimeType;
47
+ private getDataRecordsFunc;
48
+ toDto(data: Partial<CreateExportTransactionDto>): Promise<CreateExportTransactionDto>;
49
+ }
50
+ //# sourceMappingURL=export-transaction.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-transaction.service.d.ts","sourceRoot":"","sources":["../../src/services/export-transaction.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAO7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAcpE,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,QAAQ,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,qBACa,wBAAyB,SAAQ,WAAW,CAAC,iBAAiB,CAAC;IAIxE,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAE7C,QAAQ,CAAC,aAAa,EAAE,aAAa;IAErC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB;IAClD,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAG/B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,SAAS;IAnB/B,OAAO,CAAC,MAAM,CAA6C;gBAGhD,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EAEpC,aAAa,EAAE,aAAa,EAE5B,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,EACnC,iBAAiB,EAAE,sBAAsB,EACzC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EAGtB,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,EACpC,SAAS,EAAE,SAAS;IAMzB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAejE,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAerC,qBAAqB;YAQrB,uBAAuB;YAIvB,sBAAsB;YAmBtB,eAAe;YAef,iBAAiB;IAuB/B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;YAIL,kBAAkB;IAe1B,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAS5F"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var ExportTransactionService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ExportTransactionService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
19
+ const typeorm_1 = require("@nestjs/typeorm");
20
+ const typeorm_2 = require("typeorm");
21
+ const config_1 = require("@nestjs/config");
22
+ const crud_helper_service_1 = require("./crud-helper.service");
23
+ const crud_service_1 = require("./crud.service");
24
+ const file_service_1 = require("./file.service");
25
+ const model_metadata_service_1 = require("./model-metadata.service");
26
+ const module_metadata_service_1 = require("./module-metadata.service");
27
+ const strings_1 = require("@angular-devkit/core/src/utils/strings");
28
+ const class_validator_1 = require("class-validator");
29
+ const create_export_transaction_dto_1 = require("../dtos/create-export-transaction.dto");
30
+ const field_metadata_entity_1 = require("../entities/field-metadata.entity");
31
+ const export_transaction_entity_1 = require("../entities/export-transaction.entity");
32
+ const csv_service_1 = require("./csv.service");
33
+ const excel_service_1 = require("./excel.service");
34
+ const mediaStorageProviders_1 = require("./mediaStorageProviders");
35
+ const solid_introspect_service_1 = require("./solid-introspect.service");
36
+ const EXPORT_CHUNK_SIZE = 100;
37
+ var ExportStatus;
38
+ (function (ExportStatus) {
39
+ ExportStatus["STARTED"] = "started";
40
+ ExportStatus["COMPLETED"] = "completed";
41
+ ExportStatus["FAILED"] = "failed";
42
+ })(ExportStatus || (ExportStatus = {}));
43
+ var ExportFormat;
44
+ (function (ExportFormat) {
45
+ ExportFormat["CSV"] = "csv";
46
+ ExportFormat["EXCEL"] = "excel";
47
+ })(ExportFormat || (ExportFormat = {}));
48
+ let ExportTransactionService = ExportTransactionService_1 = class ExportTransactionService extends crud_service_1.CRUDService {
49
+ constructor(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, introspectService, excelService, csvService, fieldRepo, moduleRef) {
50
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'exportTransaction', 'solid-core', moduleRef);
51
+ this.modelMetadataService = modelMetadataService;
52
+ this.moduleMetadataService = moduleMetadataService;
53
+ this.configService = configService;
54
+ this.fileService = fileService;
55
+ this.discoveryService = discoveryService;
56
+ this.crudHelperService = crudHelperService;
57
+ this.entityManager = entityManager;
58
+ this.repo = repo;
59
+ this.introspectService = introspectService;
60
+ this.excelService = excelService;
61
+ this.csvService = csvService;
62
+ this.fieldRepo = fieldRepo;
63
+ this.moduleRef = moduleRef;
64
+ this.logger = new common_1.Logger(ExportTransactionService_1.name);
65
+ }
66
+ async triggerExportSync(id) {
67
+ try {
68
+ const loadedExportTransaction = await this.loadExportTransaction(id);
69
+ const { exportStream, templateName, uuid, exportTransaction } = await this.getExportStreamDetails(loadedExportTransaction);
70
+ this.updateExportTransaction(id, ExportStatus.COMPLETED);
71
+ const fileName = this.getFileName(templateName, uuid, loadedExportTransaction.exportTemplate.templateFormat);
72
+ const mimeType = this.getMimeType(loadedExportTransaction.exportTemplate.templateFormat);
73
+ return { exportStream, fileName, mimeType, exportTransaction };
74
+ }
75
+ catch (error) {
76
+ this.updateExportTransaction(id, ExportStatus.FAILED, error.message);
77
+ throw error;
78
+ }
79
+ }
80
+ async triggerExportAsync(id) {
81
+ try {
82
+ const loadedExportTransaction = await this.loadExportTransaction(id);
83
+ const { exportStream, templateName, uuid, exportTransaction } = await this.getExportStreamDetails(loadedExportTransaction);
84
+ const fileFormat = loadedExportTransaction.exportTemplate.templateFormat;
85
+ await this.storeExportStream(exportStream, exportTransaction, this.getFileName(templateName, uuid, fileFormat));
86
+ this.updateExportTransaction(id, ExportStatus.COMPLETED);
87
+ }
88
+ catch (error) {
89
+ this.updateExportTransaction(id, ExportStatus.FAILED, error.message);
90
+ throw error;
91
+ }
92
+ }
93
+ async loadExportTransaction(id) {
94
+ return await this.repo.findOne({
95
+ where: { id: id },
96
+ relations: { exportTemplate: { modelMetadata: true } },
97
+ });
98
+ }
99
+ async updateExportTransaction(id, status, error) {
100
+ await this.repo.update(id, { status, error });
101
+ }
102
+ async getExportStreamDetails(exportTransaction) {
103
+ const fields = JSON.parse(exportTransaction.exportTemplate.fields);
104
+ const modelName = exportTransaction.exportTemplate.modelMetadata.singularName;
105
+ const modelService = this.introspectService.getProvider(`${(0, strings_1.classify)(modelName)}Service`);
106
+ const templateName = exportTransaction.exportTemplate.templateName;
107
+ const uuid = exportTransaction.exportTransactionId;
108
+ const dataRecordsFunc = await this.getDataRecordsFunc(fields, modelService);
109
+ let exportStream = await this.getExportStream(exportTransaction.exportTemplate.templateFormat, dataRecordsFunc);
110
+ return { exportStream, templateName, uuid, exportTransaction };
111
+ }
112
+ async getExportStream(templateFormat, dataRecordsFunc) {
113
+ let exportStream = null;
114
+ switch (templateFormat) {
115
+ case ExportFormat.EXCEL:
116
+ exportStream = await this.excelService.createExcelStream(dataRecordsFunc, EXPORT_CHUNK_SIZE);
117
+ break;
118
+ case ExportFormat.CSV:
119
+ exportStream = await await this.csvService.createCsvStream(dataRecordsFunc, EXPORT_CHUNK_SIZE);
120
+ break;
121
+ default:
122
+ throw new Error('Invalid export format');
123
+ }
124
+ return exportStream;
125
+ }
126
+ async storeExportStream(exportStream, exportTransaction, fileName) {
127
+ const exportedFileMediaField = await this.fieldRepo.findOne({
128
+ where: {
129
+ name: 'exportedFile',
130
+ model: {
131
+ singularName: 'exportTransaction'
132
+ },
133
+ },
134
+ relations: ['model', 'mediaStorageProvider'],
135
+ });
136
+ const storageProviderMetadata = exportedFileMediaField.mediaStorageProvider;
137
+ const storageProviderType = storageProviderMetadata.type;
138
+ const storageProvider = await (0, mediaStorageProviders_1.getMediaStorageProvider)(this.moduleRef, storageProviderType);
139
+ await storageProvider.storeStreams([[exportStream, fileName]], exportTransaction, exportedFileMediaField);
140
+ }
141
+ getFileName(templateName, exportTransactionUUID, fileFormat) {
142
+ const extension = (fileFormat === ExportFormat.EXCEL) ? 'xlsx' : 'csv';
143
+ return `${(0, strings_1.dasherize)(templateName)}-${exportTransactionUUID}.${extension}`;
144
+ }
145
+ getMimeType(fileFormat) {
146
+ return (fileFormat === ExportFormat.EXCEL) ? 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'text/csv';
147
+ }
148
+ async getDataRecordsFunc(fields, modelService) {
149
+ return async (chunkIndex, chunkSize) => {
150
+ const offset = chunkIndex * chunkSize;
151
+ const recordFilterDto = {
152
+ fields,
153
+ limit: chunkSize,
154
+ offset,
155
+ };
156
+ const data = await modelService.instance.find(recordFilterDto);
157
+ const records = data.records ?? [];
158
+ return records;
159
+ };
160
+ }
161
+ async toDto(data) {
162
+ const dto = new create_export_transaction_dto_1.CreateExportTransactionDto(data);
163
+ const errors = await (0, class_validator_1.validate)(dto);
164
+ if (errors.length > 0) {
165
+ console.error("Validation failed:", errors);
166
+ return null;
167
+ }
168
+ return dto;
169
+ }
170
+ };
171
+ exports.ExportTransactionService = ExportTransactionService;
172
+ exports.ExportTransactionService = ExportTransactionService = ExportTransactionService_1 = __decorate([
173
+ (0, common_1.Injectable)(),
174
+ __param(6, (0, typeorm_1.InjectEntityManager)()),
175
+ __param(7, (0, typeorm_1.InjectRepository)(export_transaction_entity_1.ExportTransaction, 'default')),
176
+ __param(11, (0, typeorm_1.InjectRepository)(field_metadata_entity_1.FieldMetadata, 'default')),
177
+ __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
178
+ module_metadata_service_1.ModuleMetadataService,
179
+ config_1.ConfigService,
180
+ file_service_1.FileService,
181
+ core_1.DiscoveryService,
182
+ crud_helper_service_1.CrudHelperService,
183
+ typeorm_2.EntityManager,
184
+ typeorm_2.Repository,
185
+ solid_introspect_service_1.SolidIntrospectService,
186
+ excel_service_1.ExcelService,
187
+ csv_service_1.CsvService,
188
+ typeorm_2.Repository,
189
+ core_1.ModuleRef])
190
+ ], ExportTransactionService);
191
+ //# sourceMappingURL=export-transaction.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-transaction.service.js","sourceRoot":"","sources":["../../src/services/export-transaction.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { ConfigType } from '@nestjs/config';
2
2
  import commonConfig from '../config/common.config';
3
+ import { Readable } from 'stream';
3
4
  export declare class FileService {
4
5
  private readonly commonConfiguration;
5
6
  private readonly s3Client;
7
+ private readonly logger;
6
8
  constructor(commonConfiguration: ConfigType<typeof commonConfig>);
7
9
  readFile(filePath: string): Promise<string | Buffer>;
8
10
  readImageFile(filePath: string): Promise<Buffer>;
@@ -15,5 +17,6 @@ export declare class FileService {
15
17
  copyToS3WithPublic(filePath: string, ContentType: string, fileName: string, bucketName: string): Promise<string>;
16
18
  deleteFromS3(fileName: string, bucketName: string): Promise<string>;
17
19
  private isValidS3Config;
20
+ writeStreamToFile(stream: Readable, filePath: string): Promise<void>;
18
21
  }
19
22
  //# sourceMappingURL=file.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAA6B,MAAM,yBAAyB,CAAC;AAMpE,qBACa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAIjB,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC;IAavE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAWpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B5G,OAAO,CAAC,qBAAqB;IAIvB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BhH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzE,OAAO,CAAC,eAAe;CAGxB"}
1
+ {"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAA6B,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAKlC,qBACa,WAAW;IAOpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IALtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAIpC,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC;IAavE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAWpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B5G,OAAO,CAAC,qBAAqB;IAIvB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BhH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzE,OAAO,CAAC,eAAe;IAUV,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBlF"}
@@ -47,6 +47,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
47
47
  var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
49
49
  };
50
+ var FileService_1;
50
51
  Object.defineProperty(exports, "__esModule", { value: true });
51
52
  exports.FileService = void 0;
52
53
  const common_1 = require("@nestjs/common");
@@ -54,9 +55,10 @@ const fs = __importStar(require("fs"));
54
55
  const client_s3_1 = require("@aws-sdk/client-s3");
55
56
  const common_config_1 = __importDefault(require("../config/common.config"));
56
57
  const path_1 = __importDefault(require("path"));
57
- let FileService = class FileService {
58
+ let FileService = FileService_1 = class FileService {
58
59
  constructor(commonConfiguration) {
59
60
  this.commonConfiguration = commonConfiguration;
61
+ this.logger = new common_1.Logger(FileService_1.name);
60
62
  if (!this.isValidS3Config(this.commonConfiguration.awsS3Credentials)) {
61
63
  return;
62
64
  }
@@ -179,9 +181,23 @@ let FileService = class FileService {
179
181
  isValidS3Config(config) {
180
182
  return !!config.S3_AWS_ACCESS_KEY && !!config.S3_AWS_SECRET_KEY && !!config.S3_AWS_REGION_NAME;
181
183
  }
184
+ async writeStreamToFile(stream, filePath) {
185
+ return new Promise((resolve, reject) => {
186
+ const writeStream = fs.createWriteStream(filePath);
187
+ stream.pipe(writeStream);
188
+ writeStream.on('finish', () => {
189
+ this.logger.debug(`✅ File saved: ${filePath}`);
190
+ resolve();
191
+ });
192
+ writeStream.on('error', (err) => {
193
+ this.logger.debug(`❌ Error saving file: ${filePath}`, err);
194
+ reject(err);
195
+ });
196
+ });
197
+ }
182
198
  };
183
199
  exports.FileService = FileService;
184
- exports.FileService = FileService = __decorate([
200
+ exports.FileService = FileService = FileService_1 = __decorate([
185
201
  (0, common_1.Injectable)(),
186
202
  __param(0, (0, common_1.Inject)(common_config_1.default.KEY)),
187
203
  __metadata("design:paramtypes", [void 0])