@chilibase/backend 0.1.0
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/README.md +3 -0
- package/lib/administration/x-browse-meta.entity.d.ts +8 -0
- package/lib/administration/x-browse-meta.entity.js +42 -0
- package/lib/administration/x-browse-meta.entity.js.map +1 -0
- package/lib/administration/x-column-meta.entity.d.ts +11 -0
- package/lib/administration/x-column-meta.entity.js +59 -0
- package/lib/administration/x-column-meta.entity.js.map +1 -0
- package/lib/administration/x-enum-enum.entity.d.ts +12 -0
- package/lib/administration/x-enum-enum.entity.js +59 -0
- package/lib/administration/x-enum-enum.entity.js.map +1 -0
- package/lib/administration/x-enum.entity.d.ts +10 -0
- package/lib/administration/x-enum.entity.js +54 -0
- package/lib/administration/x-enum.entity.js.map +1 -0
- package/lib/administration/x-file.entity.d.ts +10 -0
- package/lib/administration/x-file.entity.js +53 -0
- package/lib/administration/x-file.entity.js.map +1 -0
- package/lib/administration/x-param.entity.d.ts +10 -0
- package/lib/administration/x-param.entity.js +54 -0
- package/lib/administration/x-param.entity.js.map +1 -0
- package/lib/administration/x-user.entity.d.ts +11 -0
- package/lib/administration/x-user.entity.js +63 -0
- package/lib/administration/x-user.entity.js.map +1 -0
- package/lib/auth/auth.module.d.ts +2 -0
- package/lib/auth/auth.module.js +19 -0
- package/lib/auth/auth.module.js.map +1 -0
- package/lib/auth/jwt-auth.guard.d.ts +10 -0
- package/lib/auth/jwt-auth.guard.js +36 -0
- package/lib/auth/jwt-auth.guard.js.map +1 -0
- package/lib/auth/jwt.strategy.d.ts +9 -0
- package/lib/auth/jwt.strategy.js +60 -0
- package/lib/auth/jwt.strategy.js.map +1 -0
- package/lib/auth/public.d.ts +2 -0
- package/lib/auth/public.js +4 -0
- package/lib/auth/public.js.map +1 -0
- package/lib/serverApi/ExportImportParam.d.ts +70 -0
- package/lib/serverApi/ExportImportParam.js +33 -0
- package/lib/serverApi/ExportImportParam.js.map +1 -0
- package/lib/serverApi/FindParam.d.ts +59 -0
- package/lib/serverApi/FindParam.js +20 -0
- package/lib/serverApi/FindParam.js.map +1 -0
- package/lib/serverApi/FindResult.d.ts +8 -0
- package/lib/serverApi/FindResult.js +2 -0
- package/lib/serverApi/FindResult.js.map +1 -0
- package/lib/serverApi/PrimeFilterSortMeta.d.ts +43 -0
- package/lib/serverApi/PrimeFilterSortMeta.js +32 -0
- package/lib/serverApi/PrimeFilterSortMeta.js.map +1 -0
- package/lib/serverApi/XBrowseMetadata.d.ts +4 -0
- package/lib/serverApi/XBrowseMetadata.js +2 -0
- package/lib/serverApi/XBrowseMetadata.js.map +1 -0
- package/lib/serverApi/XEntityMetadata.d.ts +35 -0
- package/lib/serverApi/XEntityMetadata.js +2 -0
- package/lib/serverApi/XEntityMetadata.js.map +1 -0
- package/lib/serverApi/XFileJsonField.d.ts +6 -0
- package/lib/serverApi/XFileJsonField.js +2 -0
- package/lib/serverApi/XFileJsonField.js.map +1 -0
- package/lib/serverApi/XPostLoginIfc.d.ts +7 -0
- package/lib/serverApi/XPostLoginIfc.js +2 -0
- package/lib/serverApi/XPostLoginIfc.js.map +1 -0
- package/lib/serverApi/XUser.d.ts +8 -0
- package/lib/serverApi/XUser.js +2 -0
- package/lib/serverApi/XUser.js.map +1 -0
- package/lib/serverApi/XUserAuthenticationIfc.d.ts +9 -0
- package/lib/serverApi/XUserAuthenticationIfc.js +2 -0
- package/lib/serverApi/XUserAuthenticationIfc.js.map +1 -0
- package/lib/serverApi/XUtilsCommon.d.ts +48 -0
- package/lib/serverApi/XUtilsCommon.js +409 -0
- package/lib/serverApi/XUtilsCommon.js.map +1 -0
- package/lib/serverApi/XUtilsConversions.d.ts +37 -0
- package/lib/serverApi/XUtilsConversions.js +386 -0
- package/lib/serverApi/XUtilsConversions.js.map +1 -0
- package/lib/serverApi/XUtilsMetadataCommon.d.ts +29 -0
- package/lib/serverApi/XUtilsMetadataCommon.js +170 -0
- package/lib/serverApi/XUtilsMetadataCommon.js.map +1 -0
- package/lib/serverApi/index.d.ts +2 -0
- package/lib/serverApi/index.js +3 -0
- package/lib/serverApi/index.js.map +1 -0
- package/lib/serverApi/x-lib-api.d.ts +12 -0
- package/lib/serverApi/x-lib-api.js +2 -0
- package/lib/serverApi/x-lib-api.js.map +1 -0
- package/lib/services/FindParamRows.d.ts +8 -0
- package/lib/services/FindParamRows.js +2 -0
- package/lib/services/FindParamRows.js.map +1 -0
- package/lib/services/FindParamRowsForAssoc.d.ts +6 -0
- package/lib/services/FindParamRowsForAssoc.js +2 -0
- package/lib/services/FindParamRowsForAssoc.js.map +1 -0
- package/lib/services/FindRowByIdParam.d.ts +5 -0
- package/lib/services/FindRowByIdParam.js +2 -0
- package/lib/services/FindRowByIdParam.js.map +1 -0
- package/lib/services/GetAssocNameParam.d.ts +4 -0
- package/lib/services/GetAssocNameParam.js +2 -0
- package/lib/services/GetAssocNameParam.js.map +1 -0
- package/lib/services/RemoveRowParam.d.ts +5 -0
- package/lib/services/RemoveRowParam.js +2 -0
- package/lib/services/RemoveRowParam.js.map +1 -0
- package/lib/services/SaveRowParam.d.ts +5 -0
- package/lib/services/SaveRowParam.js +2 -0
- package/lib/services/SaveRowParam.js.map +1 -0
- package/lib/services/XAdvancedConsoleLogger.d.ts +4 -0
- package/lib/services/XAdvancedConsoleLogger.js +25 -0
- package/lib/services/XAdvancedConsoleLogger.js.map +1 -0
- package/lib/services/XAppError.d.ts +3 -0
- package/lib/services/XAppError.js +8 -0
- package/lib/services/XAppError.js.map +1 -0
- package/lib/services/XEnvVars.d.ts +23 -0
- package/lib/services/XEnvVars.js +27 -0
- package/lib/services/XEnvVars.js.map +1 -0
- package/lib/services/XOptimisticLockingSubscriber.d.ts +4 -0
- package/lib/services/XOptimisticLockingSubscriber.js +23 -0
- package/lib/services/XOptimisticLockingSubscriber.js.map +1 -0
- package/lib/services/XRowIdListToRemove.d.ts +10 -0
- package/lib/services/XRowIdListToRemove.js +26 -0
- package/lib/services/XRowIdListToRemove.js.map +1 -0
- package/lib/services/XUtils.d.ts +16 -0
- package/lib/services/XUtils.js +58 -0
- package/lib/services/XUtils.js.map +1 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/index.js +5 -0
- package/lib/services/index.js.map +1 -0
- package/lib/services/x-browse-form-metadata.service.d.ts +7 -0
- package/lib/services/x-browse-form-metadata.service.js +40 -0
- package/lib/services/x-browse-form-metadata.service.js.map +1 -0
- package/lib/services/x-entity-metadata.service.d.ts +15 -0
- package/lib/services/x-entity-metadata.service.js +127 -0
- package/lib/services/x-entity-metadata.service.js.map +1 -0
- package/lib/services/x-exception.filter.d.ts +4 -0
- package/lib/services/x-exception.filter.js +64 -0
- package/lib/services/x-exception.filter.js.map +1 -0
- package/lib/services/x-export-csv.service.d.ts +24 -0
- package/lib/services/x-export-csv.service.js +155 -0
- package/lib/services/x-export-csv.service.js.map +1 -0
- package/lib/services/x-export-excel.service.d.ts +12 -0
- package/lib/services/x-export-excel.service.js +68 -0
- package/lib/services/x-export-excel.service.js.map +1 -0
- package/lib/services/x-export-json.service.d.ts +7 -0
- package/lib/services/x-export-json.service.js +45 -0
- package/lib/services/x-export-json.service.js.map +1 -0
- package/lib/services/x-export.service.d.ts +14 -0
- package/lib/services/x-export.service.js +90 -0
- package/lib/services/x-export.service.js.map +1 -0
- package/lib/services/x-file.controller.d.ts +13 -0
- package/lib/services/x-file.controller.js +111 -0
- package/lib/services/x-file.controller.js.map +1 -0
- package/lib/services/x-file.service.d.ts +8 -0
- package/lib/services/x-file.service.js +41 -0
- package/lib/services/x-file.service.js.map +1 -0
- package/lib/services/x-lazy-data-table.service.d.ts +33 -0
- package/lib/services/x-lazy-data-table.service.js +227 -0
- package/lib/services/x-lazy-data-table.service.js.map +1 -0
- package/lib/services/x-lib.controller.d.ts +45 -0
- package/lib/services/x-lib.controller.js +205 -0
- package/lib/services/x-lib.controller.js.map +1 -0
- package/lib/services/x-lib.module.d.ts +4 -0
- package/lib/services/x-lib.module.js +51 -0
- package/lib/services/x-lib.module.js.map +1 -0
- package/lib/services/x-lib.service.d.ts +33 -0
- package/lib/services/x-lib.service.js +264 -0
- package/lib/services/x-lib.service.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/x-query-data/XMainQueryData.d.ts +27 -0
- package/lib/x-query-data/XMainQueryData.js +172 -0
- package/lib/x-query-data/XMainQueryData.js.map +1 -0
- package/lib/x-query-data/XQueryData.d.ts +33 -0
- package/lib/x-query-data/XQueryData.js +242 -0
- package/lib/x-query-data/XQueryData.js.map +1 -0
- package/lib/x-query-data/XSubQueryData.d.ts +11 -0
- package/lib/x-query-data/XSubQueryData.js +52 -0
- package/lib/x-query-data/XSubQueryData.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Catch, HttpStatus, HttpException } from '@nestjs/common';
|
|
8
|
+
import { QueryFailedError } from "typeorm";
|
|
9
|
+
import { XAppError } from "./XAppError.js";
|
|
10
|
+
let XExceptionFilter = class XExceptionFilter {
|
|
11
|
+
catch(exception, host) {
|
|
12
|
+
const ctx = host.switchToHttp();
|
|
13
|
+
const response = ctx.getResponse();
|
|
14
|
+
const request = ctx.getRequest();
|
|
15
|
+
let status;
|
|
16
|
+
let responseBody;
|
|
17
|
+
if (exception instanceof HttpException) {
|
|
18
|
+
status = exception.getStatus();
|
|
19
|
+
responseBody = {
|
|
20
|
+
statusCode: status,
|
|
21
|
+
message: exception.message,
|
|
22
|
+
exceptionName: exception.name
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
else if (exception instanceof QueryFailedError) {
|
|
26
|
+
status = HttpStatus.INTERNAL_SERVER_ERROR;
|
|
27
|
+
responseBody = {
|
|
28
|
+
statusCode: status,
|
|
29
|
+
message: exception.message,
|
|
30
|
+
exceptionName: exception.name,
|
|
31
|
+
sqlMessage: exception.sqlMessage,
|
|
32
|
+
sql: exception.sql
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else if (exception instanceof Error) {
|
|
36
|
+
status = HttpStatus.INTERNAL_SERVER_ERROR;
|
|
37
|
+
responseBody = {
|
|
38
|
+
statusCode: status,
|
|
39
|
+
message: exception.message,
|
|
40
|
+
exceptionName: exception.name
|
|
41
|
+
};
|
|
42
|
+
if (!(exception instanceof XAppError)) {
|
|
43
|
+
console.log(exception.stack);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
status = HttpStatus.INTERNAL_SERVER_ERROR;
|
|
48
|
+
responseBody = {
|
|
49
|
+
statusCode: status,
|
|
50
|
+
message: exception,
|
|
51
|
+
exceptionName: "Unknown exception (string/number)"
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
console.log("XExceptionFilter responseBody = " + JSON.stringify(responseBody));
|
|
55
|
+
response
|
|
56
|
+
.status(status)
|
|
57
|
+
.json(responseBody);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
XExceptionFilter = __decorate([
|
|
61
|
+
Catch()
|
|
62
|
+
], XExceptionFilter);
|
|
63
|
+
export { XExceptionFilter };
|
|
64
|
+
//# sourceMappingURL=x-exception.filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-exception.filter.js","sourceRoot":"","sources":["../../src/services/x-exception.filter.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAkB,KAAK,EAAiB,UAAU,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAEhG,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGlC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAW,CAAC;QAE1C,IAAI,MAAM,CAAC;QACX,IAAI,YAAY,CAAC;QACjB,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;YAErC,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;aAChC,CAAC;QACN,CAAC;aACI,IAAI,SAAS,YAAY,gBAAgB,EAAE,CAAC;YAE7C,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,UAAU,EAAG,SAAiB,CAAC,UAAU;gBACzC,GAAG,EAAG,SAAiB,CAAC,GAAG;aAC9B,CAAC;QACN,CAAC;aACI,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;YAGlC,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,IAAI;aAEhC,CAAC;YAEF,IAAI,CAAC,CAAC,SAAS,YAAY,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;aACI,CAAC;YAEF,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC1C,YAAY,GAAG;gBACX,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,SAAS;gBAClB,aAAa,EAAE,mCAAmC;aACrD,CAAC;QACN,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/E,QAAQ;aACH,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAA;AA5DY,gBAAgB;IAD5B,KAAK,EAAE;GACK,gBAAgB,CA4D5B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Response } from "express";
|
|
2
|
+
import { CsvEncoding, CsvParam, ExportCsvParam, XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
3
|
+
import { XExportColumn, XExportService } from "./x-export.service.js";
|
|
4
|
+
import { SelectQueryBuilder } from "typeorm";
|
|
5
|
+
export declare class XCsvWriter {
|
|
6
|
+
csvParam: CsvParam;
|
|
7
|
+
res: Response;
|
|
8
|
+
constructor(csvParam: CsvParam, res: Response);
|
|
9
|
+
writeRow(...valueList: any): void;
|
|
10
|
+
end(): void;
|
|
11
|
+
private convertToStr;
|
|
12
|
+
private processCsvItem;
|
|
13
|
+
number(value: any): string;
|
|
14
|
+
numberAsCsv(value: number | null): string;
|
|
15
|
+
}
|
|
16
|
+
export declare class XExportCsvService extends XExportService {
|
|
17
|
+
export(csvParam: CsvParam, columns: XExportColumn[], entity: string | undefined, rows: any[], res: Response): void;
|
|
18
|
+
exportBase(csvParam: CsvParam, columns: XExportColumn[], createHeaders: boolean, multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, entity: string | undefined, rows: any[], res: Response): void;
|
|
19
|
+
exportUsingList(exportCsvParam: ExportCsvParam, columns: XExportColumn[], selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
|
|
20
|
+
exportUsingStream(exportCsvParam: ExportCsvParam, columns: XExportColumn[], selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
|
|
21
|
+
startExport(csvParam: CsvParam, columns: XExportColumn[], createHeaders: boolean, res: Response): XCsvWriter;
|
|
22
|
+
static getHeaderCharset(csvEncoding: CsvEncoding): string;
|
|
23
|
+
private exportRowToCsv;
|
|
24
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var XExportCsvService_1;
|
|
8
|
+
import { HttpStatus, Injectable } from "@nestjs/common";
|
|
9
|
+
import { CsvDecimalFormat, CsvEncoding, XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
10
|
+
import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
|
|
11
|
+
import { dateFormat, datetimeFormat, numberFromModel } from "../serverApi/XUtilsConversions.js";
|
|
12
|
+
import * as iconv from "iconv-lite";
|
|
13
|
+
import { XExportService } from "./x-export.service.js";
|
|
14
|
+
import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
|
|
15
|
+
export class XCsvWriter {
|
|
16
|
+
csvParam;
|
|
17
|
+
res;
|
|
18
|
+
constructor(csvParam, res) {
|
|
19
|
+
this.csvParam = csvParam;
|
|
20
|
+
this.res = res;
|
|
21
|
+
}
|
|
22
|
+
writeRow(...valueList) {
|
|
23
|
+
let csvRow = "";
|
|
24
|
+
let firstItem = true;
|
|
25
|
+
for (const value of valueList) {
|
|
26
|
+
let valueStr = this.convertToStr(value);
|
|
27
|
+
valueStr = this.processCsvItem(valueStr);
|
|
28
|
+
if (firstItem) {
|
|
29
|
+
firstItem = false;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
csvRow += this.csvParam.csvSeparator;
|
|
33
|
+
}
|
|
34
|
+
csvRow += valueStr;
|
|
35
|
+
}
|
|
36
|
+
csvRow += XUtilsCommon.newLine;
|
|
37
|
+
this.res.write(iconv.encode(csvRow, this.csvParam.csvEncoding));
|
|
38
|
+
}
|
|
39
|
+
end() {
|
|
40
|
+
this.res.status(HttpStatus.OK);
|
|
41
|
+
this.res.end();
|
|
42
|
+
}
|
|
43
|
+
convertToStr(value) {
|
|
44
|
+
let valueStr;
|
|
45
|
+
if (value === null || value === undefined) {
|
|
46
|
+
valueStr = "";
|
|
47
|
+
}
|
|
48
|
+
else if (typeof value === 'number') {
|
|
49
|
+
valueStr = this.numberAsCsv(value);
|
|
50
|
+
}
|
|
51
|
+
else if (value instanceof Date) {
|
|
52
|
+
if (value.getUTCHours() === 0 && value.getUTCMinutes() === 0 && value.getUTCSeconds() === 0) {
|
|
53
|
+
valueStr = dateFormat(value, 'yyyy-MM-dd');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
valueStr = datetimeFormat(value, 'yyyy-MM-dd HH:mm:ss');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
valueStr = value.toString();
|
|
61
|
+
}
|
|
62
|
+
return valueStr;
|
|
63
|
+
}
|
|
64
|
+
processCsvItem(valueStr) {
|
|
65
|
+
if (valueStr === "ID") {
|
|
66
|
+
valueStr = '"' + valueStr + '"';
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
valueStr = valueStr.replace(/"/g, '""');
|
|
70
|
+
if (valueStr.search(new RegExp(`("|${this.csvParam.csvSeparator}|\n)`, 'g')) >= 0) {
|
|
71
|
+
valueStr = '"' + valueStr + '"';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return valueStr;
|
|
75
|
+
}
|
|
76
|
+
number(value) {
|
|
77
|
+
const numberValue = numberFromModel(value);
|
|
78
|
+
return this.numberAsCsv(numberValue);
|
|
79
|
+
}
|
|
80
|
+
numberAsCsv(value) {
|
|
81
|
+
let valueStr = "";
|
|
82
|
+
if (value !== null) {
|
|
83
|
+
valueStr = value.toString();
|
|
84
|
+
if (this.csvParam.csvDecimalFormat === CsvDecimalFormat.Comma) {
|
|
85
|
+
valueStr = valueStr.replace('.', ',');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return valueStr;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
let XExportCsvService = XExportCsvService_1 = class XExportCsvService extends XExportService {
|
|
92
|
+
export(csvParam, columns, entity, rows, res) {
|
|
93
|
+
this.exportBase(csvParam, columns, true, XMultilineExportType.Multiline, undefined, entity, rows, res);
|
|
94
|
+
}
|
|
95
|
+
exportBase(csvParam, columns, createHeaders, multilineExportType, fieldsToDuplicateValues, entity, rows, res) {
|
|
96
|
+
const xCsvWriter = this.startExport(csvParam, columns, createHeaders, res);
|
|
97
|
+
const xEntity = entity ? XUtilsMetadataCommon.getXEntity(entity) : undefined;
|
|
98
|
+
for (const row of rows) {
|
|
99
|
+
this.exportRowToCsv(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row, xCsvWriter);
|
|
100
|
+
}
|
|
101
|
+
xCsvWriter.end();
|
|
102
|
+
}
|
|
103
|
+
async exportUsingList(exportCsvParam, columns, selectQueryBuilder, res) {
|
|
104
|
+
const rowList = await selectQueryBuilder.getMany();
|
|
105
|
+
const excelCsvParam = exportCsvParam.excelCsvParam;
|
|
106
|
+
this.exportBase(exportCsvParam.csvParam, columns, excelCsvParam.headers !== undefined, excelCsvParam.toManyAssocExport, excelCsvParam.fieldsToDuplicateValues, exportCsvParam.queryParam.entity, rowList, res);
|
|
107
|
+
}
|
|
108
|
+
async exportUsingStream(exportCsvParam, columns, selectQueryBuilder, res) {
|
|
109
|
+
const xCsvWriter = this.startExport(exportCsvParam.csvParam, columns, exportCsvParam.excelCsvParam.headers !== undefined, res);
|
|
110
|
+
const readStream = await selectQueryBuilder.stream();
|
|
111
|
+
const xEntity = XUtilsMetadataCommon.getXEntity(exportCsvParam.queryParam.entity);
|
|
112
|
+
readStream.on('data', data => {
|
|
113
|
+
const entityObj = this.transformToEntity(data, selectQueryBuilder);
|
|
114
|
+
this.exportRowToCsv(columns, exportCsvParam.excelCsvParam.toManyAssocExport, exportCsvParam.excelCsvParam.fieldsToDuplicateValues, xEntity, entityObj, xCsvWriter);
|
|
115
|
+
});
|
|
116
|
+
readStream.on('end', () => {
|
|
117
|
+
xCsvWriter.end();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
startExport(csvParam, columns, createHeaders, res) {
|
|
121
|
+
const headerCharset = XExportCsvService_1.getHeaderCharset(csvParam.csvEncoding);
|
|
122
|
+
res.setHeader("Content-Type", `text/csv; charset=${headerCharset}`);
|
|
123
|
+
res.charset = headerCharset;
|
|
124
|
+
const xCsvWriter = new XCsvWriter(csvParam, res);
|
|
125
|
+
if (createHeaders) {
|
|
126
|
+
xCsvWriter.writeRow(...columns.map((value) => value.header));
|
|
127
|
+
}
|
|
128
|
+
return xCsvWriter;
|
|
129
|
+
}
|
|
130
|
+
static getHeaderCharset(csvEncoding) {
|
|
131
|
+
let headerCharset;
|
|
132
|
+
switch (csvEncoding) {
|
|
133
|
+
case CsvEncoding.Utf8:
|
|
134
|
+
headerCharset = "UTF-8";
|
|
135
|
+
break;
|
|
136
|
+
case CsvEncoding.Win1250:
|
|
137
|
+
headerCharset = "windows-1250";
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
throw `HeaderCharset for csvEncoding "${csvEncoding}" not implemented`;
|
|
141
|
+
}
|
|
142
|
+
return headerCharset;
|
|
143
|
+
}
|
|
144
|
+
exportRowToCsv(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row, xCsvWriter) {
|
|
145
|
+
const resultRowList = this.exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row);
|
|
146
|
+
for (const resultRow of resultRowList) {
|
|
147
|
+
xCsvWriter.writeRow(...resultRow);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
XExportCsvService = XExportCsvService_1 = __decorate([
|
|
152
|
+
Injectable()
|
|
153
|
+
], XExportCsvService);
|
|
154
|
+
export { XExportCsvService };
|
|
155
|
+
//# sourceMappingURL=x-export-csv.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-export-csv.service.js","sourceRoot":"","sources":["../../src/services/x-export-csv.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StreamableFile } from "@nestjs/common";
|
|
2
|
+
import { XExportColumn, XExportService } from "./x-export.service.js";
|
|
3
|
+
import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
4
|
+
import * as ExcelJS from "exceljs";
|
|
5
|
+
export declare class XExportExcelService extends XExportService {
|
|
6
|
+
export(worksheetName: string, columns: XExportColumn[], entity: string | undefined, rows: any[]): Promise<StreamableFile>;
|
|
7
|
+
exportBase(worksheetName: string, columns: XExportColumn[], createHeaders: boolean, multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, entity: string | undefined, rows: any[]): Promise<StreamableFile>;
|
|
8
|
+
createWorksheet(workbook: ExcelJS.Workbook, worksheetName: string, createFrozenRow?: boolean): ExcelJS.Worksheet;
|
|
9
|
+
highlightHeaderRow(worksheet: ExcelJS.Worksheet): void;
|
|
10
|
+
createStreamableFile(workbook: ExcelJS.Workbook): Promise<StreamableFile>;
|
|
11
|
+
private computeWidth;
|
|
12
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Injectable, StreamableFile } from "@nestjs/common";
|
|
8
|
+
import { XExportService } from "./x-export.service.js";
|
|
9
|
+
import { Readable } from "stream";
|
|
10
|
+
import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
11
|
+
import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
|
|
12
|
+
import * as ExcelJS from "exceljs";
|
|
13
|
+
let XExportExcelService = class XExportExcelService extends XExportService {
|
|
14
|
+
export(worksheetName, columns, entity, rows) {
|
|
15
|
+
return this.exportBase(worksheetName, columns, true, XMultilineExportType.Singleline, undefined, entity, rows);
|
|
16
|
+
}
|
|
17
|
+
exportBase(worksheetName, columns, createHeaders, multilineExportType, fieldsToDuplicateValues, entity, rows) {
|
|
18
|
+
const workbook = new ExcelJS.Workbook();
|
|
19
|
+
const worksheet = this.createWorksheet(workbook, worksheetName, createHeaders);
|
|
20
|
+
if (createHeaders) {
|
|
21
|
+
worksheet.columns = columns.map((value) => { return { header: value.header, width: value.width ?? this.computeWidth(value.header) }; });
|
|
22
|
+
}
|
|
23
|
+
const xEntity = entity ? XUtilsMetadataCommon.getXEntity(entity) : undefined;
|
|
24
|
+
for (const row of rows) {
|
|
25
|
+
const resultRowList = this.exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row);
|
|
26
|
+
for (const resultRow of resultRowList) {
|
|
27
|
+
worksheet.addRow(resultRow);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (createHeaders) {
|
|
31
|
+
this.highlightHeaderRow(worksheet);
|
|
32
|
+
}
|
|
33
|
+
return this.createStreamableFile(workbook);
|
|
34
|
+
}
|
|
35
|
+
createWorksheet(workbook, worksheetName, createFrozenRow) {
|
|
36
|
+
createFrozenRow = createFrozenRow ?? true;
|
|
37
|
+
return workbook.addWorksheet(worksheetName, createFrozenRow ? {
|
|
38
|
+
views: [{ state: "frozen", ySplit: 1 }]
|
|
39
|
+
} : undefined);
|
|
40
|
+
}
|
|
41
|
+
highlightHeaderRow(worksheet) {
|
|
42
|
+
const headerRow = worksheet.getRow(1);
|
|
43
|
+
headerRow.eachCell((cell, colNumber) => {
|
|
44
|
+
cell.font = { bold: true };
|
|
45
|
+
cell.fill = {
|
|
46
|
+
type: 'pattern',
|
|
47
|
+
pattern: 'solid',
|
|
48
|
+
fgColor: { argb: 'FFCCECFF' }
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async createStreamableFile(workbook) {
|
|
53
|
+
const buffer = await workbook.xlsx.writeBuffer();
|
|
54
|
+
return new StreamableFile(Readable.from(buffer));
|
|
55
|
+
}
|
|
56
|
+
computeWidth(header) {
|
|
57
|
+
let width = undefined;
|
|
58
|
+
if (header.length > 0) {
|
|
59
|
+
width = header.length * 1 + 1;
|
|
60
|
+
}
|
|
61
|
+
return width;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
XExportExcelService = __decorate([
|
|
65
|
+
Injectable()
|
|
66
|
+
], XExportExcelService);
|
|
67
|
+
export { XExportExcelService };
|
|
68
|
+
//# sourceMappingURL=x-export-excel.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-export-excel.service.js","sourceRoot":"","sources":["../../src/services/x-export-excel.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { XExportService } from "./x-export.service.js";
|
|
2
|
+
import { SelectQueryBuilder } from "typeorm";
|
|
3
|
+
import { Response } from "express";
|
|
4
|
+
export declare class XExportJsonService extends XExportService {
|
|
5
|
+
exportJsonUsingList(selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
|
|
6
|
+
exportJsonUsingStream(selectQueryBuilder: SelectQueryBuilder<unknown>, res: Response): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { HttpStatus, Injectable } from "@nestjs/common";
|
|
8
|
+
import { XExportService } from "./x-export.service.js";
|
|
9
|
+
import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
|
|
10
|
+
let XExportJsonService = class XExportJsonService extends XExportService {
|
|
11
|
+
async exportJsonUsingList(selectQueryBuilder, res) {
|
|
12
|
+
const rowList = await selectQueryBuilder.getMany();
|
|
13
|
+
res.write(XUtilsCommon.objectAsJSON(rowList), "utf8");
|
|
14
|
+
res.status(HttpStatus.OK);
|
|
15
|
+
res.end();
|
|
16
|
+
}
|
|
17
|
+
async exportJsonUsingStream(selectQueryBuilder, res) {
|
|
18
|
+
const readStream = await selectQueryBuilder.stream();
|
|
19
|
+
res.write("[", "utf8");
|
|
20
|
+
let firstRow = true;
|
|
21
|
+
readStream.on('data', data => {
|
|
22
|
+
const entityObj = this.transformToEntity(data, selectQueryBuilder);
|
|
23
|
+
let rowStr = "";
|
|
24
|
+
if (firstRow) {
|
|
25
|
+
firstRow = false;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
rowStr += ",";
|
|
29
|
+
}
|
|
30
|
+
rowStr += XUtilsCommon.newLine;
|
|
31
|
+
rowStr += XUtilsCommon.objectAsJSON(entityObj);
|
|
32
|
+
res.write(rowStr, "utf8");
|
|
33
|
+
});
|
|
34
|
+
readStream.on('end', () => {
|
|
35
|
+
res.write(XUtilsCommon.newLine + "]", "utf8");
|
|
36
|
+
res.status(HttpStatus.OK);
|
|
37
|
+
res.end();
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
XExportJsonService = __decorate([
|
|
42
|
+
Injectable()
|
|
43
|
+
], XExportJsonService);
|
|
44
|
+
export { XExportJsonService };
|
|
45
|
+
//# sourceMappingURL=x-export-json.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-export-json.service.js","sourceRoot":"","sources":["../../src/services/x-export-json.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,cAAc;IAElD,KAAK,CAAC,mBAAmB,CAAC,kBAA+C,EAAE,GAAa;QAEpF,MAAM,OAAO,GAAU,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAE1D,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,kBAA+C,EAAE,GAAa;QAEtF,MAAM,UAAU,GAAe,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAEjE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACnE,IAAI,MAAM,GAAW,EAAE,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACtB,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9C,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1B,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAxCY,kBAAkB;IAD9B,UAAU,EAAE;GACA,kBAAkB,CAwC9B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
2
|
+
import { XEntity } from "../serverApi/XEntityMetadata.js";
|
|
3
|
+
import { SelectQueryBuilder } from "typeorm";
|
|
4
|
+
export type XFieldType = "string" | "decimal" | "date" | "datetime" | "interval" | "boolean";
|
|
5
|
+
export interface XExportColumn {
|
|
6
|
+
header: string;
|
|
7
|
+
field: string | ((row: any) => any);
|
|
8
|
+
type?: XFieldType;
|
|
9
|
+
width?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class XExportService {
|
|
12
|
+
exportRow(columns: XExportColumn[], multilineExportType: XMultilineExportType, fieldsToDuplicateValues: string[] | undefined, xEntity: XEntity | undefined, row: any): Array<Array<any>>;
|
|
13
|
+
protected transformToEntity(data: any, selectQueryBuilder: SelectQueryBuilder<unknown>): any;
|
|
14
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { XMultilineExportType } from "../serverApi/ExportImportParam.js";
|
|
2
|
+
import { XUtilsMetadataCommon } from "../serverApi/XUtilsMetadataCommon.js";
|
|
3
|
+
import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
|
|
4
|
+
import { AsUIType, convertValueBase } from "../serverApi/XUtilsConversions.js";
|
|
5
|
+
import { RawSqlResultsToEntityTransformer } from "typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js";
|
|
6
|
+
export class XExportService {
|
|
7
|
+
exportRow(columns, multilineExportType, fieldsToDuplicateValues, xEntity, row) {
|
|
8
|
+
const columnList = new Array(columns.length);
|
|
9
|
+
let maxColumnLength = 1;
|
|
10
|
+
for (const [columnIndex, xExportColumn] of columns.entries()) {
|
|
11
|
+
let fieldType = xExportColumn.type;
|
|
12
|
+
let scale = undefined;
|
|
13
|
+
let value;
|
|
14
|
+
if (typeof xExportColumn.field === 'function') {
|
|
15
|
+
value = xExportColumn.field(row);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
if (!fieldType) {
|
|
19
|
+
if (xEntity) {
|
|
20
|
+
const xField = XUtilsMetadataCommon.getXFieldByPathBase(xEntity, xExportColumn.field);
|
|
21
|
+
if (xField) {
|
|
22
|
+
fieldType = xField.type;
|
|
23
|
+
scale = xField.scale;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
value = XUtilsCommon.getValueOrValueListByPath(row, xExportColumn.field);
|
|
28
|
+
}
|
|
29
|
+
let columnValues;
|
|
30
|
+
let columnValuesProcessed = false;
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
columnValues = value;
|
|
33
|
+
if (multilineExportType === XMultilineExportType.Singleline) {
|
|
34
|
+
if (fieldType) {
|
|
35
|
+
columnValues = columnValues.map((value) => convertValueBase(fieldType, scale, value, true, AsUIType.Text));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
columnValues = columnValues.map((value) => (value !== null && value !== undefined) ? value.toString() : "");
|
|
39
|
+
}
|
|
40
|
+
columnValues = [columnValues.join(", ")];
|
|
41
|
+
columnValuesProcessed = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
columnValues = [value];
|
|
46
|
+
}
|
|
47
|
+
if (!columnValuesProcessed) {
|
|
48
|
+
if (fieldType) {
|
|
49
|
+
columnValues = columnValues.map((value) => convertValueBase(fieldType, scale, value, true, AsUIType.Excel));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (columnValues.length > maxColumnLength) {
|
|
53
|
+
maxColumnLength = columnValues.length;
|
|
54
|
+
}
|
|
55
|
+
columnList[columnIndex] = columnValues;
|
|
56
|
+
}
|
|
57
|
+
const resultRowList = new Array(maxColumnLength);
|
|
58
|
+
for (let rowIndex = 0; rowIndex < maxColumnLength; rowIndex++) {
|
|
59
|
+
const rowValues = new Array(columns.length);
|
|
60
|
+
for (const [index, columnValues] of columnList.entries()) {
|
|
61
|
+
let csvValue;
|
|
62
|
+
if (rowIndex < columnValues.length) {
|
|
63
|
+
csvValue = columnValues[rowIndex];
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
csvValue = "";
|
|
67
|
+
if (fieldsToDuplicateValues) {
|
|
68
|
+
const field = columns[index].field;
|
|
69
|
+
if (typeof field === 'string') {
|
|
70
|
+
if (fieldsToDuplicateValues.includes(field)) {
|
|
71
|
+
if (columnValues.length > 0) {
|
|
72
|
+
csvValue = columnValues[0];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
rowValues[index] = csvValue;
|
|
79
|
+
}
|
|
80
|
+
resultRowList[rowIndex] = rowValues;
|
|
81
|
+
}
|
|
82
|
+
return resultRowList;
|
|
83
|
+
}
|
|
84
|
+
transformToEntity(data, selectQueryBuilder) {
|
|
85
|
+
const transformer = new RawSqlResultsToEntityTransformer(selectQueryBuilder.expressionMap, selectQueryBuilder.connection.driver, [], [], undefined);
|
|
86
|
+
const entityList = transformer.transform([data], selectQueryBuilder.expressionMap.mainAlias);
|
|
87
|
+
return entityList[0];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=x-export.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-export.service.js","sourceRoot":"","sources":["../../src/services/x-export.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StreamableFile } from "@nestjs/common";
|
|
2
|
+
import { XFileService } from "./x-file.service.js";
|
|
3
|
+
import { XFile } from "../administration/x-file.entity.js";
|
|
4
|
+
export declare class XFileController {
|
|
5
|
+
private readonly xFileService;
|
|
6
|
+
constructor(xFileService: XFileService);
|
|
7
|
+
uploadFileIntoFileSystem(body: any, file: Express.Multer.File): Promise<XFile>;
|
|
8
|
+
uploadFileIntoDb(body: any, file: Express.Multer.File): Promise<XFile>;
|
|
9
|
+
downloadFile(body: {
|
|
10
|
+
xFileId: number;
|
|
11
|
+
}): Promise<StreamableFile>;
|
|
12
|
+
private static getXFilesDir;
|
|
13
|
+
}
|