storemw-core-api 1.0.164 → 1.0.165
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/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +5 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/query_builder/queryBuilder.d.ts +1 -1
- package/dist/lib/query_builder/queryBuilder.js +66 -15
- package/dist/lib/query_builder/queryBuilder.js.map +1 -1
- package/dist/lib/query_builder/queryDocumentProfile.d.ts +7 -0
- package/dist/lib/query_builder/queryDocumentProfile.js +87 -0
- package/dist/lib/query_builder/queryDocumentProfile.js.map +1 -0
- package/dist/lib/query_builder/queryUserBranch.d.ts +10 -0
- package/dist/lib/query_builder/queryUserBranch.js +31 -0
- package/dist/lib/query_builder/queryUserBranch.js.map +1 -0
- package/dist/services/branch/UserBranchService.d.ts +2 -2
- package/dist/services/branch/UserBranchService.js +53 -22
- package/dist/services/branch/UserBranchService.js.map +1 -1
- package/dist/services/document/DocumentProfileService.js +47 -19
- package/dist/services/document/DocumentProfileService.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/index.d.ts
CHANGED
|
@@ -7,5 +7,7 @@ export { CustomizeTransform } from "./customize/CustomizeTransform";
|
|
|
7
7
|
export type { CustomizeTransformProps } from "./customize/CustomizeTransform";
|
|
8
8
|
export { toFieldMap, buildSqlRawSelect, buildSqlRawSelectCount, buildSqlRelation, buildSqlSelect, buildSqlWhere, buildSqlLimitOffset, buildSqlOrderBy, getFieldsByType, buildInjectionFieldsSqlSelect, getListWithCount } from "./query_builder/queryBuilder";
|
|
9
9
|
export { getDocumentSqlRelationMaps, buildDocumentMainSqlSelect, buildDocumentDefaultSqlSelect, buildDocumentProfileSqlSelect, buildDocumentLocationSqlSelect, buildDocumentTotalSqlSelect, buildDocumentItemSqlSelectAgg, buildDocumentItemSqlSelect, buildDocumentDocumentSqlSelectAgg, buildDocumentDocumentSqlSelect } from "./query_builder/queryDocument";
|
|
10
|
+
export { getDocumentProfileRelationMaps } from "./query_builder/queryDocumentProfile";
|
|
11
|
+
export { getUserBranchRelationMaps } from "./query_builder/queryUserBranch";
|
|
10
12
|
export { getFileSqlRelationMaps, buildFileMainSqlSelect, buildFileDefaultSqlSelect, } from "./query_builder/queryFile";
|
|
11
13
|
export { getSchedulerLogSqlRelationMaps, getSchedulerRequestSqlRelationMaps, buildSchedulerLogMainSqlSelect, buildSchedulerRequestMainSqlSelect, buildSchedulerLogDefaultSqlSelect, buildSchedulerRequestDefaultSqlSelect } from "./query_builder/queryScheduler";
|
package/dist/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildSchedulerRequestDefaultSqlSelect = exports.buildSchedulerLogDefaultSqlSelect = exports.buildSchedulerRequestMainSqlSelect = exports.buildSchedulerLogMainSqlSelect = exports.getSchedulerRequestSqlRelationMaps = exports.getSchedulerLogSqlRelationMaps = exports.buildFileDefaultSqlSelect = exports.buildFileMainSqlSelect = exports.getFileSqlRelationMaps = exports.buildDocumentDocumentSqlSelect = exports.buildDocumentDocumentSqlSelectAgg = exports.buildDocumentItemSqlSelect = exports.buildDocumentItemSqlSelectAgg = exports.buildDocumentTotalSqlSelect = exports.buildDocumentLocationSqlSelect = exports.buildDocumentProfileSqlSelect = exports.buildDocumentDefaultSqlSelect = exports.buildDocumentMainSqlSelect = exports.getDocumentSqlRelationMaps = exports.getListWithCount = exports.buildInjectionFieldsSqlSelect = exports.getFieldsByType = exports.buildSqlOrderBy = exports.buildSqlLimitOffset = exports.buildSqlWhere = exports.buildSqlSelect = exports.buildSqlRelation = exports.buildSqlRawSelectCount = exports.buildSqlRawSelect = exports.toFieldMap = exports.CustomizeTransform = exports.serviceFactoryAllowUserTypes = exports.serviceFactoryNames = exports.ServiceFactory = exports.ModelFactory = exports.prisma = void 0;
|
|
3
|
+
exports.buildSchedulerRequestDefaultSqlSelect = exports.buildSchedulerLogDefaultSqlSelect = exports.buildSchedulerRequestMainSqlSelect = exports.buildSchedulerLogMainSqlSelect = exports.getSchedulerRequestSqlRelationMaps = exports.getSchedulerLogSqlRelationMaps = exports.buildFileDefaultSqlSelect = exports.buildFileMainSqlSelect = exports.getFileSqlRelationMaps = exports.getUserBranchRelationMaps = exports.getDocumentProfileRelationMaps = exports.buildDocumentDocumentSqlSelect = exports.buildDocumentDocumentSqlSelectAgg = exports.buildDocumentItemSqlSelect = exports.buildDocumentItemSqlSelectAgg = exports.buildDocumentTotalSqlSelect = exports.buildDocumentLocationSqlSelect = exports.buildDocumentProfileSqlSelect = exports.buildDocumentDefaultSqlSelect = exports.buildDocumentMainSqlSelect = exports.getDocumentSqlRelationMaps = exports.getListWithCount = exports.buildInjectionFieldsSqlSelect = exports.getFieldsByType = exports.buildSqlOrderBy = exports.buildSqlLimitOffset = exports.buildSqlWhere = exports.buildSqlSelect = exports.buildSqlRelation = exports.buildSqlRawSelectCount = exports.buildSqlRawSelect = exports.toFieldMap = exports.CustomizeTransform = exports.serviceFactoryAllowUserTypes = exports.serviceFactoryNames = exports.ServiceFactory = exports.ModelFactory = exports.prisma = void 0;
|
|
4
4
|
var prisma_1 = require("./prisma/prisma");
|
|
5
5
|
Object.defineProperty(exports, "prisma", { enumerable: true, get: function () { return prisma_1.prisma; } });
|
|
6
6
|
var ModelFactory_1 = require("./model_factory/ModelFactory");
|
|
@@ -35,6 +35,10 @@ Object.defineProperty(exports, "buildDocumentItemSqlSelectAgg", { enumerable: tr
|
|
|
35
35
|
Object.defineProperty(exports, "buildDocumentItemSqlSelect", { enumerable: true, get: function () { return queryDocument_1.buildDocumentItemSqlSelect; } });
|
|
36
36
|
Object.defineProperty(exports, "buildDocumentDocumentSqlSelectAgg", { enumerable: true, get: function () { return queryDocument_1.buildDocumentDocumentSqlSelectAgg; } });
|
|
37
37
|
Object.defineProperty(exports, "buildDocumentDocumentSqlSelect", { enumerable: true, get: function () { return queryDocument_1.buildDocumentDocumentSqlSelect; } });
|
|
38
|
+
var queryDocumentProfile_1 = require("./query_builder/queryDocumentProfile");
|
|
39
|
+
Object.defineProperty(exports, "getDocumentProfileRelationMaps", { enumerable: true, get: function () { return queryDocumentProfile_1.getDocumentProfileRelationMaps; } });
|
|
40
|
+
var queryUserBranch_1 = require("./query_builder/queryUserBranch");
|
|
41
|
+
Object.defineProperty(exports, "getUserBranchRelationMaps", { enumerable: true, get: function () { return queryUserBranch_1.getUserBranchRelationMaps; } });
|
|
38
42
|
var queryFile_1 = require("./query_builder/queryFile");
|
|
39
43
|
Object.defineProperty(exports, "getFileSqlRelationMaps", { enumerable: true, get: function () { return queryFile_1.getFileSqlRelationMaps; } });
|
|
40
44
|
Object.defineProperty(exports, "buildFileMainSqlSelect", { enumerable: true, get: function () { return queryFile_1.buildFileMainSqlSelect; } });
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AAA/B,gGAAA,MAAM,OAAA;AAEf,6DAA2D;AAAlD,4GAAA,YAAY,OAAA;AAGrB,mEAAoH;AAA3G,gHAAA,cAAc,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,8HAAA,4BAA4B,OAAA;AAG1E,qEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAG3B,6DAA6P;AAApP,0GAAA,UAAU,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,6HAAA,6BAA6B,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAEvN,+DAYsC;AAXlC,2HAAA,0BAA0B,OAAA;AAC1B,2HAAA,0BAA0B,OAAA;AAC1B,8HAAA,6BAA6B,OAAA;AAC7B,8HAAA,6BAA6B,OAAA;AAC7B,gCAAgC;AAChC,+HAAA,8BAA8B,OAAA;AAC9B,4HAAA,2BAA2B,OAAA;AAC3B,8HAAA,6BAA6B,OAAA;AAC7B,2HAAA,0BAA0B,OAAA;AAC1B,kIAAA,iCAAiC,OAAA;AACjC,+HAAA,8BAA8B,OAAA;AAGlC,uDAIkC;AAH9B,mHAAA,sBAAsB,OAAA;AACtB,mHAAA,sBAAsB,OAAA;AACtB,sHAAA,yBAAyB,OAAA;AAG7B,iEAOuC;AANnC,gIAAA,8BAA8B,OAAA;AAC9B,oIAAA,kCAAkC,OAAA;AAClC,gIAAA,8BAA8B,OAAA;AAC9B,oIAAA,kCAAkC,OAAA;AAClC,mIAAA,iCAAiC,OAAA;AACjC,uIAAA,qCAAqC,OAAA","sourcesContent":["export { prisma } from \"./prisma/prisma\"\n\nexport { ModelFactory } from \"./model_factory/ModelFactory\"\nexport type { DefaultOmitFields } from \"./model_factory/default\"\n\nexport { ServiceFactory, serviceFactoryNames, serviceFactoryAllowUserTypes } from \"./service_factory/ServiceFactory\"\nexport type { ServiceFactoryName, ServiceFactoryAllowUserType } from \"./service_factory/ServiceFactory\"\n\nexport { CustomizeTransform } from \"./customize/CustomizeTransform\"\nexport type { CustomizeTransformProps } from \"./customize/CustomizeTransform\"\n\nexport { toFieldMap, buildSqlRawSelect, buildSqlRawSelectCount, buildSqlRelation, buildSqlSelect, buildSqlWhere, buildSqlLimitOffset, buildSqlOrderBy, getFieldsByType, buildInjectionFieldsSqlSelect, getListWithCount } from \"./query_builder/queryBuilder\"\n\nexport {\n getDocumentSqlRelationMaps,\n buildDocumentMainSqlSelect,\n buildDocumentDefaultSqlSelect,\n buildDocumentProfileSqlSelect,\n // buildDocumentAmountSqlSelect,\n buildDocumentLocationSqlSelect,\n buildDocumentTotalSqlSelect,\n buildDocumentItemSqlSelectAgg,\n buildDocumentItemSqlSelect,\n buildDocumentDocumentSqlSelectAgg,\n buildDocumentDocumentSqlSelect\n} from \"./query_builder/queryDocument\"\n\nexport {\n getFileSqlRelationMaps,\n buildFileMainSqlSelect,\n buildFileDefaultSqlSelect,\n} from \"./query_builder/queryFile\"\n\nexport {\n getSchedulerLogSqlRelationMaps,\n getSchedulerRequestSqlRelationMaps,\n buildSchedulerLogMainSqlSelect,\n buildSchedulerRequestMainSqlSelect,\n buildSchedulerLogDefaultSqlSelect,\n buildSchedulerRequestDefaultSqlSelect\n} from \"./query_builder/queryScheduler\""]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AAA/B,gGAAA,MAAM,OAAA;AAEf,6DAA2D;AAAlD,4GAAA,YAAY,OAAA;AAGrB,mEAAoH;AAA3G,gHAAA,cAAc,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,8HAAA,4BAA4B,OAAA;AAG1E,qEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAG3B,6DAA6P;AAApP,0GAAA,UAAU,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,6HAAA,6BAA6B,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAEvN,+DAYsC;AAXlC,2HAAA,0BAA0B,OAAA;AAC1B,2HAAA,0BAA0B,OAAA;AAC1B,8HAAA,6BAA6B,OAAA;AAC7B,8HAAA,6BAA6B,OAAA;AAC7B,gCAAgC;AAChC,+HAAA,8BAA8B,OAAA;AAC9B,4HAAA,2BAA2B,OAAA;AAC3B,8HAAA,6BAA6B,OAAA;AAC7B,2HAAA,0BAA0B,OAAA;AAC1B,kIAAA,iCAAiC,OAAA;AACjC,+HAAA,8BAA8B,OAAA;AAGlC,6EAE6C;AADzC,sIAAA,8BAA8B,OAAA;AAGlC,mEAEwC;AADpC,4HAAA,yBAAyB,OAAA;AAG7B,uDAIkC;AAH9B,mHAAA,sBAAsB,OAAA;AACtB,mHAAA,sBAAsB,OAAA;AACtB,sHAAA,yBAAyB,OAAA;AAG7B,iEAOuC;AANnC,gIAAA,8BAA8B,OAAA;AAC9B,oIAAA,kCAAkC,OAAA;AAClC,gIAAA,8BAA8B,OAAA;AAC9B,oIAAA,kCAAkC,OAAA;AAClC,mIAAA,iCAAiC,OAAA;AACjC,uIAAA,qCAAqC,OAAA","sourcesContent":["export { prisma } from \"./prisma/prisma\"\n\nexport { ModelFactory } from \"./model_factory/ModelFactory\"\nexport type { DefaultOmitFields } from \"./model_factory/default\"\n\nexport { ServiceFactory, serviceFactoryNames, serviceFactoryAllowUserTypes } from \"./service_factory/ServiceFactory\"\nexport type { ServiceFactoryName, ServiceFactoryAllowUserType } from \"./service_factory/ServiceFactory\"\n\nexport { CustomizeTransform } from \"./customize/CustomizeTransform\"\nexport type { CustomizeTransformProps } from \"./customize/CustomizeTransform\"\n\nexport { toFieldMap, buildSqlRawSelect, buildSqlRawSelectCount, buildSqlRelation, buildSqlSelect, buildSqlWhere, buildSqlLimitOffset, buildSqlOrderBy, getFieldsByType, buildInjectionFieldsSqlSelect, getListWithCount } from \"./query_builder/queryBuilder\"\n\nexport {\n getDocumentSqlRelationMaps,\n buildDocumentMainSqlSelect,\n buildDocumentDefaultSqlSelect,\n buildDocumentProfileSqlSelect,\n // buildDocumentAmountSqlSelect,\n buildDocumentLocationSqlSelect,\n buildDocumentTotalSqlSelect,\n buildDocumentItemSqlSelectAgg,\n buildDocumentItemSqlSelect,\n buildDocumentDocumentSqlSelectAgg,\n buildDocumentDocumentSqlSelect\n} from \"./query_builder/queryDocument\"\n\nexport {\n getDocumentProfileRelationMaps\n} from \"./query_builder/queryDocumentProfile\"\n\nexport {\n getUserBranchRelationMaps\n} from \"./query_builder/queryUserBranch\"\n\nexport {\n getFileSqlRelationMaps,\n buildFileMainSqlSelect,\n buildFileDefaultSqlSelect,\n} from \"./query_builder/queryFile\"\n\nexport {\n getSchedulerLogSqlRelationMaps,\n getSchedulerRequestSqlRelationMaps,\n buildSchedulerLogMainSqlSelect,\n buildSchedulerRequestMainSqlSelect,\n buildSchedulerLogDefaultSqlSelect,\n buildSchedulerRequestDefaultSqlSelect\n} from \"./query_builder/queryScheduler\""]}
|
|
@@ -41,7 +41,7 @@ export declare const buildSqlRawSelect: ({ tableName, mainAlias, accountId, sqlS
|
|
|
41
41
|
sqlLimitOffset: string;
|
|
42
42
|
skipFilterAccountId?: boolean;
|
|
43
43
|
}) => string;
|
|
44
|
-
export declare const buildSqlRawSelectCount: ({ tableName, mainAlias, accountId,
|
|
44
|
+
export declare const buildSqlRawSelectCount: ({ tableName, mainAlias, accountId, sqlRelation, sqlWhere, sqlGroupBy, skipFilterAccountId }: {
|
|
45
45
|
tableName: string;
|
|
46
46
|
mainAlias: string;
|
|
47
47
|
accountId: number;
|
|
@@ -29,20 +29,70 @@ const buildSqlRawSelect = ({ tableName, mainAlias, accountId, sqlSelect, sqlRela
|
|
|
29
29
|
`;
|
|
30
30
|
};
|
|
31
31
|
exports.buildSqlRawSelect = buildSqlRawSelect;
|
|
32
|
-
const buildSqlRawSelectCount = ({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
// export const buildSqlRawSelectCount = ({
|
|
33
|
+
// tableName,
|
|
34
|
+
// mainAlias,
|
|
35
|
+
// accountId,
|
|
36
|
+
// sqlSelect,
|
|
37
|
+
// sqlRelation,
|
|
38
|
+
// sqlWhere,
|
|
39
|
+
// sqlGroupBy,
|
|
40
|
+
// sqlOrderby,
|
|
41
|
+
// skipFilterAccountId = false
|
|
42
|
+
// }: {
|
|
43
|
+
// tableName: string,
|
|
44
|
+
// mainAlias: string,
|
|
45
|
+
// accountId: number,
|
|
46
|
+
// sqlSelect: string[]
|
|
47
|
+
// sqlRelation: string[]
|
|
48
|
+
// sqlWhere: string[]
|
|
49
|
+
// sqlGroupBy: string[]
|
|
50
|
+
// sqlOrderby: string,
|
|
51
|
+
// skipFilterAccountId?: boolean
|
|
52
|
+
// }) => {
|
|
53
|
+
// const sql = buildSqlRawSelect({
|
|
54
|
+
// tableName,
|
|
55
|
+
// mainAlias,
|
|
56
|
+
// accountId,
|
|
57
|
+
// sqlSelect,
|
|
58
|
+
// sqlRelation,
|
|
59
|
+
// sqlWhere,
|
|
60
|
+
// sqlGroupBy,
|
|
61
|
+
// sqlOrderby,
|
|
62
|
+
// sqlLimitOffset: "",
|
|
63
|
+
// skipFilterAccountId
|
|
64
|
+
// })
|
|
65
|
+
// return `WITH filtered_docs AS (${sql}) SELECT COUNT(*) AS filtered_count FROM filtered_docs;`
|
|
66
|
+
// }
|
|
67
|
+
const buildSqlRawSelectCount = ({ tableName, mainAlias, accountId, sqlRelation, sqlWhere, sqlGroupBy, skipFilterAccountId = false }) => {
|
|
68
|
+
// enforce account isolation
|
|
69
|
+
if (!skipFilterAccountId) {
|
|
70
|
+
sqlWhere = [
|
|
71
|
+
...sqlWhere,
|
|
72
|
+
`${mainAlias}.accountid = ${accountId}`
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
const baseQuery = `
|
|
76
|
+
FROM ${tableName} AS ${mainAlias}
|
|
77
|
+
${sqlRelation.join(" ")}
|
|
78
|
+
${sqlWhere.length > 0 ? `WHERE ${sqlWhere.join(" AND ")}` : ""}
|
|
79
|
+
`;
|
|
80
|
+
// CASE 1: no grouping → FASTEST PATH
|
|
81
|
+
if (!sqlGroupBy.length) {
|
|
82
|
+
return `
|
|
83
|
+
SELECT COUNT(*)
|
|
84
|
+
${baseQuery}
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
// CASE 2: grouping → safe count of grouped results
|
|
88
|
+
return `
|
|
89
|
+
SELECT COUNT(*)
|
|
90
|
+
FROM (
|
|
91
|
+
SELECT 1
|
|
92
|
+
${baseQuery}
|
|
93
|
+
GROUP BY ${sqlGroupBy.join(",")}
|
|
94
|
+
) t
|
|
95
|
+
`;
|
|
46
96
|
};
|
|
47
97
|
exports.buildSqlRawSelectCount = buildSqlRawSelectCount;
|
|
48
98
|
/**
|
|
@@ -328,7 +378,8 @@ const getListWithCount = async ({ model, tableName, mainAlias, countKey, sqlRela
|
|
|
328
378
|
sqlSelect: [`${mainAlias}.${countKey}`],
|
|
329
379
|
sqlRelation: filteredArray,
|
|
330
380
|
sqlWhere,
|
|
331
|
-
sqlGroupBy: [`${mainAlias}.${countKey}`],
|
|
381
|
+
// sqlGroupBy: [`${mainAlias}.${countKey}`],
|
|
382
|
+
sqlGroupBy: [],
|
|
332
383
|
sqlOrderby: ``
|
|
333
384
|
});
|
|
334
385
|
let count = await model.raw(sqlRawCount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryBuilder.js","sourceRoot":"","sources":["../../../src/lib/query_builder/queryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { queryListFilterOperators } from '@/schema/common';\nimport { QueryList, QueryListFilter } from \"@/schema/common\";\nimport { throwError } from '@/utils';\n\ntype SqlDialect = \"postgres\" | \"mysql\";\ntype JoinType = \"left\" | \"inner\" | \"right\";\n\n/**\n * Create a typed map of model fields for safer access in raw queries.\n *\n * This utility takes a TypeScript model type `T` and returns an object\n * where each key is the field name and the value is the same string.\n * \n * The returned object can be used for dot-suggestion, reducing typos\n * when referencing columns in SQL queries.\n *\n * @example\n * import type { Customer } from \"@prisma/client\";\n * import { createFields } from \"@/utils/createFields\";\n * \n * const CustomerFields = createFields<Customer>();\n * console.log(CustomerFields.id); // \"id\"\n * console.log(CustomerFields.name); // \"name\"\n * \n * const query = `SELECT ${CustomerFields.id}, ${CustomerFields.name} FROM customers`;\n */\ntype FieldMap<T> = {\n [K in keyof T]: K;\n};\n\nexport function getFieldsByType<T>(): FieldMap<T> {\n return new Proxy({} as FieldMap<T>, {\n get: (_, prop) => prop,\n }) as FieldMap<T>;\n}\n\ntype FieldMeta = { name: string; type: string };\n\nexport const toFieldMap = (\n fields: FieldMeta[],\n prefix = \"uip\",\n infix = \"inf_\"\n): Record<string, string> => {\n return Object.fromEntries(\n fields.map(f => [`${prefix}.${f.name}`, `${infix}${f.name}`])\n );\n}\n\nexport const buildSqlRawSelect = ({\n tableName,\n mainAlias,\n accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId = false\n}: {\n tableName: string,\n mainAlias: string,\n accountId: number,\n sqlSelect: string[]\n sqlRelation: string[]\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string\n sqlLimitOffset: string\n skipFilterAccountId?: boolean\n}) => {\n\n if (skipFilterAccountId === false) {\n sqlWhere = [...sqlWhere, `${mainAlias}.accountid = ${accountId}`]\n }\n\n return `SELECT \n ${sqlSelect.join(\",\")}\n FROM \n ${tableName} as ${mainAlias}\n ${sqlRelation.join(\" \")}\n ${sqlWhere.length > 0 ? `WHERE ${sqlWhere.join(' and ')}` : ``}\n ${sqlGroupBy.length > 0 ? `GROUP BY ${sqlGroupBy.join(\",\")}` : \"\"}\n ${sqlOrderby} \n ${sqlLimitOffset}\n `\n}\n\n\nexport const buildSqlRawSelectCount = ({\n tableName,\n mainAlias,\n accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n skipFilterAccountId = false\n}: {\n tableName: string,\n mainAlias: string,\n accountId: number,\n sqlSelect: string[]\n sqlRelation: string[]\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string,\n skipFilterAccountId?: boolean\n}) => {\n\n const sql = buildSqlRawSelect({\n tableName,\n mainAlias,\n accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset: \"\",\n skipFilterAccountId\n })\n\n return `WITH filtered_docs AS (${sql}) SELECT COUNT(*) AS filtered_count FROM filtered_docs;`\n}\n\n/**\n * Build a SQL join clause\n * @param joinType - \"left\" | \"inner\" | \"right\" (default: \"left\")\n * @param sourceAlias - alias of the source table, e.g., \"cus\"\n * @param targetTable - table to join, e.g., \"users\"\n * @param targetAlias - alias for the target table, e.g., \"usr\"\n * @param onConditions - array of ON conditions, e.g., [\"cus.user_id = usr.user_id\", \"usr.isdelete = false\"]\n */\nexport const buildSqlRelation = (\n joinType: JoinType,\n sourceAlias: string,\n targetTable: string,\n targetAlias: string,\n onConditions: string[]\n) => {\n return `\n ${joinType} join ${targetTable} as ${targetAlias}\n on ${onConditions.join(\" and \")}\n `;\n}\n/**\n * Build a SQL SELECT column list with aliases\n *\n * This function takes a table alias and a mapping of column names to\n * desired aliases, and returns a comma-separated string suitable for\n * inclusion in a SQL SELECT statement.\n *\n * @param abb - The alias of the table in the SQL query (e.g., \"cus\" for customers)\n * @param columns - An object mapping column names to their desired aliases\n * e.g., { id: \"customerId\", name: \"customerName\" }\n * @returns A string of columns with aliases, e.g.,\n * \"cus.id as customerId, cus.name as customerName\"\n *\n * @example\n * const cols = buildSqlSelect(\"cus\", { id: \"customerId\", name: \"customerName\" });\n * // cols => \"cus.id as customerId, cus.name as customerName\"\n */\nexport const buildSqlSelect = (abb: string, columns: Record<string, string>): string => {\n\n if (!columns || Object.keys(columns).length === 0) return \"\";\n\n return Object.entries(columns)\n .map(([col, alias]) => `${abb ? abb + \".\" : \"\"}${col} as ${alias}`)\n .join(\", \");\n}\n\nexport const buildSqlWhere = (\n filters: QueryListFilter[] | undefined,\n selectColumns: any,\n ctx: { dialect: SqlDialect } = {\n dialect: \"postgres\"\n }\n): {\n where: string,\n colNames: string[],\n aliasKeys: string[]\n} => {\n\n if (!filters || filters.length === 0) {\n return {\n where: ``,\n colNames: [],\n aliasKeys: []\n }\n }\n\n const andClauses: string[] = [];\n const orClauses: string[] = [];\n\n // const col = (field: string) => (tableAlias ? `${tableAlias}.${field}` : field);\n\n const col = (field: string) => {\n let filteredColumns = Object.fromEntries(\n Object.entries(selectColumns).filter(([key, alias]) => alias === field)\n )\n return filteredColumns ? Object.keys(filteredColumns)[0] : field\n }\n\n const colNames: string[] = []\n\n for (const filter of filters) {\n if (!filter) continue;\n\n const { field, operator, value } = filter;\n\n // const formatValue = (val: any, prefix?: string, suffix?: string) => \n // typeof val === \"string\" ? `'${prefix ?? \"\"}${val.replace(/'/g, \"''\")}${suffix ?? \"\"}'` : val;\n\n const formatValue = (\n val: any,\n operator: QueryListFilter[\"operator\"],\n prefix?: string,\n suffix?: string\n ) => {\n\n let returnValue = val\n let sqlValuePrefix = ``\n let sqlValueSuffix = ``\n\n if (operator === queryListFilterOperators.startsWith) {\n sqlValuePrefix = ``\n sqlValueSuffix = `%`\n }\n\n if (operator === queryListFilterOperators.endsWith) {\n sqlValuePrefix = `%`\n sqlValueSuffix = ``\n }\n\n if (\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n sqlValuePrefix = `%`\n sqlValueSuffix = `%`\n }\n\n // override\n if (prefix) sqlValuePrefix = prefix\n if (suffix) sqlValueSuffix = suffix\n\n if (typeof val === \"string\") {\n returnValue = `'${sqlValuePrefix ?? \"\"}${val.replace(/'/g, \"''\")}${sqlValueSuffix ?? \"\"}'`\n }\n\n // check the type of val must string & operator is using like\n if (\n operator === queryListFilterOperators.startsWith ||\n operator === queryListFilterOperators.endsWith ||\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n if (typeof val !== \"string\") {\n throwError(`Filters part:${field} using:${operator} like the val must be string`)\n }\n }\n\n return returnValue\n\n }\n\n const formatWherePart = (val: any, operator: QueryListFilter[\"operator\"]) => {\n\n let sqlOperator: string = operator\n\n // check with like operator\n if (\n operator === queryListFilterOperators.startsWith ||\n operator === queryListFilterOperators.endsWith ||\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n sqlOperator = ctx.dialect === \"postgres\" ? `ILIKE` : `LIKE` // only ILIKE supported in postgres\n }\n\n // not array in value\n if (Array.isArray(value) === false) {\n\n let sqlValue = formatValue(val, operator)\n return `${colName} ${sqlOperator} ${sqlValue}`\n\n }\n\n // for array in value\n let subOrQuery: string[] = []\n\n value.forEach((i: any) => {\n\n let sqlValue = `${formatValue(i, operator)}`\n\n subOrQuery.push(`${colName} ${sqlOperator} ${sqlValue}`)\n\n })\n\n return `(${subOrQuery.join(\" OR \")})`\n\n }\n\n const colName = `${col(field)}`\n\n switch (operator) {\n case queryListFilterOperators.eq:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.eq)}`);\n // andClauses.push(`${colName} = ${formatValue(value)}`);\n break;\n case queryListFilterOperators.notEq:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.notEq)}`);\n // andClauses.push(`${colName} != ${formatValue(value)}`);\n break;\n case queryListFilterOperators.startsWith:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.startsWith)}`);\n // andClauses.push(`${colName} ILIKE '${value}%'`);\n break;\n case queryListFilterOperators.endsWith:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.endsWith)}`);\n // andClauses.push(`${colName} ILIKE '%${value}'`);\n break;\n case queryListFilterOperators.contains:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.contains)}`);\n // andClauses.push(`${colName} ILIKE '%${value}%'`);\n break;\n case queryListFilterOperators.anyOf:\n andClauses.push(`${colName} IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.excludeOf:\n andClauses.push(`${colName} NOT IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.moreThanEq:\n andClauses.push(`${colName} >= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.lessThanEq:\n andClauses.push(`${colName} <= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.isNull:\n andClauses.push(`${colName} IS NULL`);\n break;\n case queryListFilterOperators.isNotNull:\n andClauses.push(`${colName} IS NOT NULL`);\n break;\n\n // Or-variants\n case queryListFilterOperators.eqOr:\n // orClauses.push(`${colName} = ${formatValue(value, operator)}`);\n orClauses.push(`${formatWherePart(value, queryListFilterOperators.eqOr)}`);\n break;\n case queryListFilterOperators.containsOr:\n // orClauses.push(`${colName} ILIKE '%${value, operator}%'`);\n orClauses.push(`${formatWherePart(value, queryListFilterOperators.containsOr)}`);\n break;\n case queryListFilterOperators.anyOfOr:\n orClauses.push(`${colName} IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.excludeOfOr:\n orClauses.push(`${colName} NOT IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.moreThanEqOr:\n orClauses.push(`${colName} >= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.lessThanEqOr:\n orClauses.push(`${colName} <= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.isNullOr:\n orClauses.push(`${colName} IS NULL`);\n break;\n }\n\n colNames.push(colName)\n\n }\n\n const whereParts: string[] = [];\n if (andClauses.length) whereParts.push(`(${andClauses.join(\" AND \")})`);\n if (orClauses.length) whereParts.push(`(${orClauses.join(\" OR \")})`);\n\n // Extract aliasKeys before '.'\n const aliasKeys = Array.from(\n new Set(\n colNames\n .map(key => key.match(/\\b([a-zA-Z_][a-zA-Z0-9_]*)\\./)?.[1])\n .filter((v): v is string => Boolean(v)) // type guard keeps only valid strings\n )\n );\n\n return {\n where: whereParts.length ? `${whereParts.join(\" AND \")}` : \"\",\n colNames,\n aliasKeys\n }\n};\n\n/** Build ORDER BY clause */\nexport const buildSqlOrderBy = (sortField: QueryList[\"sortfield\"], sortOrder: QueryList[\"sortorder\"]) =>\n sortField ? `ORDER BY ${sortField} ${sortOrder.toUpperCase()}` : \"\";\n\n/** Build LIMIT/OFFSET clause */\nexport const buildSqlLimitOffset = (limit?: QueryList[\"limit\"], offset?: QueryList[\"offset\"]) => {\n const parts: string[] = [];\n\n const _limit = Number(limit ?? 10)\n const _offset = Number(offset ?? 0)\n\n if (_limit !== undefined) parts.push(`LIMIT ${_limit}`);\n if (_offset !== undefined) parts.push(`OFFSET ${_offset}`);\n\n return parts.join(\" \");\n};\n\n/** For Injection Fields */\nexport const buildInjectionFieldsSqlSelect = (alias: string, activeInjectionFields: any[] = []) => {\n return activeInjectionFields.reduce((acc, col) => {\n\n // check the field type is decimal\n let castValue = ``\n\n if (col?.fieldType === \"numeric\") {\n castValue = `::float`\n }\n\n if (col?.fieldType === \"integer\") {\n castValue = `::int`\n }\n\n acc[`${alias}.${col?.fieldName}${castValue}`] = `inf_${col?.fieldName}`;\n return acc;\n }, {} as Record<string, string>);\n}\n\n/**\n * Executes a dynamic SQL listing query along with a count query.\n * \n * This function builds SQL SELECT and COUNT statements using the provided\n * relation maps, filters, and query options, then executes them through\n * the given Prisma model's `raw()` method.\n *\n * Commonly used for paginated data listings that require both the\n * result set and total record count.\n * \n * Returns an object containing:\n * - `data`: The paginated result set.\n * - `total`: The total count of records that match the filters.\n */\nexport const getListWithCount = async ({\n model,\n tableName,\n mainAlias,\n countKey,\n sqlRelationMaps,\n accountId,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg,\n sqlRelation,\n sqlRelationAgg,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n}: {\n model: any,\n tableName: string,\n mainAlias: string,\n countKey: string,\n sqlRelationMaps: any,\n accountId: number,\n filters: any[],\n filterColumns: any,\n sqlSelect: string[]\n sqlSelectAgg: string[],\n sqlRelation: string[]\n sqlRelationAgg: string[],\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string\n sqlLimitOffset: string\n}) => {\n\n const requestWhere = buildSqlWhere(filters, filterColumns)\n\n sqlWhere = [\n ...sqlWhere,\n ...(filters.length ? [requestWhere?.where] : []),\n ]\n\n // get the data (pagination)\n const sqlRaw = buildSqlRawSelect({\n tableName,\n mainAlias,\n accountId,\n sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n let data = await model.raw(sqlRaw)\n\n let aliasKeys = requestWhere?.aliasKeys\n\n let filteredArray: any = Object.entries(sqlRelationMaps)\n .filter(([key]) => aliasKeys.includes(key))\n .map(([_, value]) => value);\n\n // console.log('filteredArray', JSON.stringify(filteredArray), aliasKeys)\n\n // get the count\n const sqlRawCount = buildSqlRawSelectCount({\n tableName,\n mainAlias,\n accountId,\n sqlSelect: [`${mainAlias}.${countKey}`],\n sqlRelation: filteredArray,\n sqlWhere,\n sqlGroupBy: [`${mainAlias}.${countKey}`],\n sqlOrderby: ``\n })\n\n let count = await model.raw(sqlRawCount)\n\n return {\n data,\n total: Number(count[0].filtered_count)\n }\n\n}"]}
|
|
1
|
+
{"version":3,"file":"queryBuilder.js","sourceRoot":"","sources":["../../../src/lib/query_builder/queryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { queryListFilterOperators } from '@/schema/common';\nimport { QueryList, QueryListFilter } from \"@/schema/common\";\nimport { throwError } from '@/utils';\n\ntype SqlDialect = \"postgres\" | \"mysql\";\ntype JoinType = \"left\" | \"inner\" | \"right\";\n\n/**\n * Create a typed map of model fields for safer access in raw queries.\n *\n * This utility takes a TypeScript model type `T` and returns an object\n * where each key is the field name and the value is the same string.\n * \n * The returned object can be used for dot-suggestion, reducing typos\n * when referencing columns in SQL queries.\n *\n * @example\n * import type { Customer } from \"@prisma/client\";\n * import { createFields } from \"@/utils/createFields\";\n * \n * const CustomerFields = createFields<Customer>();\n * console.log(CustomerFields.id); // \"id\"\n * console.log(CustomerFields.name); // \"name\"\n * \n * const query = `SELECT ${CustomerFields.id}, ${CustomerFields.name} FROM customers`;\n */\ntype FieldMap<T> = {\n [K in keyof T]: K;\n};\n\nexport function getFieldsByType<T>(): FieldMap<T> {\n return new Proxy({} as FieldMap<T>, {\n get: (_, prop) => prop,\n }) as FieldMap<T>;\n}\n\ntype FieldMeta = { name: string; type: string };\n\nexport const toFieldMap = (\n fields: FieldMeta[],\n prefix = \"uip\",\n infix = \"inf_\"\n): Record<string, string> => {\n return Object.fromEntries(\n fields.map(f => [`${prefix}.${f.name}`, `${infix}${f.name}`])\n );\n}\n\nexport const buildSqlRawSelect = ({\n tableName,\n mainAlias,\n accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId = false\n}: {\n tableName: string,\n mainAlias: string,\n accountId: number,\n sqlSelect: string[]\n sqlRelation: string[]\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string\n sqlLimitOffset: string\n skipFilterAccountId?: boolean\n}) => {\n\n if (skipFilterAccountId === false) {\n sqlWhere = [...sqlWhere, `${mainAlias}.accountid = ${accountId}`]\n }\n\n return `SELECT \n ${sqlSelect.join(\",\")}\n FROM \n ${tableName} as ${mainAlias}\n ${sqlRelation.join(\" \")}\n ${sqlWhere.length > 0 ? `WHERE ${sqlWhere.join(' and ')}` : ``}\n ${sqlGroupBy.length > 0 ? `GROUP BY ${sqlGroupBy.join(\",\")}` : \"\"}\n ${sqlOrderby} \n ${sqlLimitOffset}\n `\n}\n\n\n// export const buildSqlRawSelectCount = ({\n// tableName,\n// mainAlias,\n// accountId,\n// sqlSelect,\n// sqlRelation,\n// sqlWhere,\n// sqlGroupBy,\n// sqlOrderby,\n// skipFilterAccountId = false\n// }: {\n// tableName: string,\n// mainAlias: string,\n// accountId: number,\n// sqlSelect: string[]\n// sqlRelation: string[]\n// sqlWhere: string[]\n// sqlGroupBy: string[]\n// sqlOrderby: string,\n// skipFilterAccountId?: boolean\n// }) => {\n\n// const sql = buildSqlRawSelect({\n// tableName,\n// mainAlias,\n// accountId,\n// sqlSelect,\n// sqlRelation,\n// sqlWhere,\n// sqlGroupBy,\n// sqlOrderby,\n// sqlLimitOffset: \"\",\n// skipFilterAccountId\n// })\n\n// return `WITH filtered_docs AS (${sql}) SELECT COUNT(*) AS filtered_count FROM filtered_docs;`\n// }\n\nexport const buildSqlRawSelectCount = ({\n tableName,\n mainAlias,\n accountId,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n skipFilterAccountId = false\n}: {\n tableName: string,\n mainAlias: string,\n accountId: number,\n sqlSelect: string[] // ignored on purpose\n sqlRelation: string[]\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string // ignored on purpose\n skipFilterAccountId?: boolean\n}) => {\n\n // enforce account isolation\n if (!skipFilterAccountId) {\n sqlWhere = [\n ...sqlWhere,\n `${mainAlias}.accountid = ${accountId}`\n ]\n }\n\n const baseQuery = `\n FROM ${tableName} AS ${mainAlias}\n ${sqlRelation.join(\" \")}\n ${sqlWhere.length > 0 ? `WHERE ${sqlWhere.join(\" AND \")}` : \"\"}\n `\n\n // CASE 1: no grouping → FASTEST PATH\n if (!sqlGroupBy.length) {\n return `\n SELECT COUNT(*)\n ${baseQuery}\n `\n }\n\n // CASE 2: grouping → safe count of grouped results\n return `\n SELECT COUNT(*)\n FROM (\n SELECT 1\n ${baseQuery}\n GROUP BY ${sqlGroupBy.join(\",\")}\n ) t\n `\n}\n\n/**\n * Build a SQL join clause\n * @param joinType - \"left\" | \"inner\" | \"right\" (default: \"left\")\n * @param sourceAlias - alias of the source table, e.g., \"cus\"\n * @param targetTable - table to join, e.g., \"users\"\n * @param targetAlias - alias for the target table, e.g., \"usr\"\n * @param onConditions - array of ON conditions, e.g., [\"cus.user_id = usr.user_id\", \"usr.isdelete = false\"]\n */\nexport const buildSqlRelation = (\n joinType: JoinType,\n sourceAlias: string,\n targetTable: string,\n targetAlias: string,\n onConditions: string[]\n) => {\n return `\n ${joinType} join ${targetTable} as ${targetAlias}\n on ${onConditions.join(\" and \")}\n `;\n}\n/**\n * Build a SQL SELECT column list with aliases\n *\n * This function takes a table alias and a mapping of column names to\n * desired aliases, and returns a comma-separated string suitable for\n * inclusion in a SQL SELECT statement.\n *\n * @param abb - The alias of the table in the SQL query (e.g., \"cus\" for customers)\n * @param columns - An object mapping column names to their desired aliases\n * e.g., { id: \"customerId\", name: \"customerName\" }\n * @returns A string of columns with aliases, e.g.,\n * \"cus.id as customerId, cus.name as customerName\"\n *\n * @example\n * const cols = buildSqlSelect(\"cus\", { id: \"customerId\", name: \"customerName\" });\n * // cols => \"cus.id as customerId, cus.name as customerName\"\n */\nexport const buildSqlSelect = (abb: string, columns: Record<string, string>): string => {\n\n if (!columns || Object.keys(columns).length === 0) return \"\";\n\n return Object.entries(columns)\n .map(([col, alias]) => `${abb ? abb + \".\" : \"\"}${col} as ${alias}`)\n .join(\", \");\n}\n\nexport const buildSqlWhere = (\n filters: QueryListFilter[] | undefined,\n selectColumns: any,\n ctx: { dialect: SqlDialect } = {\n dialect: \"postgres\"\n }\n): {\n where: string,\n colNames: string[],\n aliasKeys: string[]\n} => {\n\n if (!filters || filters.length === 0) {\n return {\n where: ``,\n colNames: [],\n aliasKeys: []\n }\n }\n\n const andClauses: string[] = [];\n const orClauses: string[] = [];\n\n // const col = (field: string) => (tableAlias ? `${tableAlias}.${field}` : field);\n\n const col = (field: string) => {\n let filteredColumns = Object.fromEntries(\n Object.entries(selectColumns).filter(([key, alias]) => alias === field)\n )\n return filteredColumns ? Object.keys(filteredColumns)[0] : field\n }\n\n const colNames: string[] = []\n\n for (const filter of filters) {\n if (!filter) continue;\n\n const { field, operator, value } = filter;\n\n // const formatValue = (val: any, prefix?: string, suffix?: string) => \n // typeof val === \"string\" ? `'${prefix ?? \"\"}${val.replace(/'/g, \"''\")}${suffix ?? \"\"}'` : val;\n\n const formatValue = (\n val: any,\n operator: QueryListFilter[\"operator\"],\n prefix?: string,\n suffix?: string\n ) => {\n\n let returnValue = val\n let sqlValuePrefix = ``\n let sqlValueSuffix = ``\n\n if (operator === queryListFilterOperators.startsWith) {\n sqlValuePrefix = ``\n sqlValueSuffix = `%`\n }\n\n if (operator === queryListFilterOperators.endsWith) {\n sqlValuePrefix = `%`\n sqlValueSuffix = ``\n }\n\n if (\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n sqlValuePrefix = `%`\n sqlValueSuffix = `%`\n }\n\n // override\n if (prefix) sqlValuePrefix = prefix\n if (suffix) sqlValueSuffix = suffix\n\n if (typeof val === \"string\") {\n returnValue = `'${sqlValuePrefix ?? \"\"}${val.replace(/'/g, \"''\")}${sqlValueSuffix ?? \"\"}'`\n }\n\n // check the type of val must string & operator is using like\n if (\n operator === queryListFilterOperators.startsWith ||\n operator === queryListFilterOperators.endsWith ||\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n if (typeof val !== \"string\") {\n throwError(`Filters part:${field} using:${operator} like the val must be string`)\n }\n }\n\n return returnValue\n\n }\n\n const formatWherePart = (val: any, operator: QueryListFilter[\"operator\"]) => {\n\n let sqlOperator: string = operator\n\n // check with like operator\n if (\n operator === queryListFilterOperators.startsWith ||\n operator === queryListFilterOperators.endsWith ||\n operator === queryListFilterOperators.contains ||\n operator === queryListFilterOperators.containsOr\n ) {\n sqlOperator = ctx.dialect === \"postgres\" ? `ILIKE` : `LIKE` // only ILIKE supported in postgres\n }\n\n // not array in value\n if (Array.isArray(value) === false) {\n\n let sqlValue = formatValue(val, operator)\n return `${colName} ${sqlOperator} ${sqlValue}`\n\n }\n\n // for array in value\n let subOrQuery: string[] = []\n\n value.forEach((i: any) => {\n\n let sqlValue = `${formatValue(i, operator)}`\n\n subOrQuery.push(`${colName} ${sqlOperator} ${sqlValue}`)\n\n })\n\n return `(${subOrQuery.join(\" OR \")})`\n\n }\n\n const colName = `${col(field)}`\n\n switch (operator) {\n case queryListFilterOperators.eq:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.eq)}`);\n // andClauses.push(`${colName} = ${formatValue(value)}`);\n break;\n case queryListFilterOperators.notEq:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.notEq)}`);\n // andClauses.push(`${colName} != ${formatValue(value)}`);\n break;\n case queryListFilterOperators.startsWith:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.startsWith)}`);\n // andClauses.push(`${colName} ILIKE '${value}%'`);\n break;\n case queryListFilterOperators.endsWith:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.endsWith)}`);\n // andClauses.push(`${colName} ILIKE '%${value}'`);\n break;\n case queryListFilterOperators.contains:\n andClauses.push(`${formatWherePart(value, queryListFilterOperators.contains)}`);\n // andClauses.push(`${colName} ILIKE '%${value}%'`);\n break;\n case queryListFilterOperators.anyOf:\n andClauses.push(`${colName} IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.excludeOf:\n andClauses.push(`${colName} NOT IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.moreThanEq:\n andClauses.push(`${colName} >= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.lessThanEq:\n andClauses.push(`${colName} <= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.isNull:\n andClauses.push(`${colName} IS NULL`);\n break;\n case queryListFilterOperators.isNotNull:\n andClauses.push(`${colName} IS NOT NULL`);\n break;\n\n // Or-variants\n case queryListFilterOperators.eqOr:\n // orClauses.push(`${colName} = ${formatValue(value, operator)}`);\n orClauses.push(`${formatWherePart(value, queryListFilterOperators.eqOr)}`);\n break;\n case queryListFilterOperators.containsOr:\n // orClauses.push(`${colName} ILIKE '%${value, operator}%'`);\n orClauses.push(`${formatWherePart(value, queryListFilterOperators.containsOr)}`);\n break;\n case queryListFilterOperators.anyOfOr:\n orClauses.push(`${colName} IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.excludeOfOr:\n orClauses.push(`${colName} NOT IN (${(Array.isArray(value) ? value : [value]).map((i) => formatValue(i, operator)).join(\", \")})`);\n break;\n case queryListFilterOperators.moreThanEqOr:\n orClauses.push(`${colName} >= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.lessThanEqOr:\n orClauses.push(`${colName} <= ${formatValue(value, operator)}`);\n break;\n case queryListFilterOperators.isNullOr:\n orClauses.push(`${colName} IS NULL`);\n break;\n }\n\n colNames.push(colName)\n\n }\n\n const whereParts: string[] = [];\n if (andClauses.length) whereParts.push(`(${andClauses.join(\" AND \")})`);\n if (orClauses.length) whereParts.push(`(${orClauses.join(\" OR \")})`);\n\n // Extract aliasKeys before '.'\n const aliasKeys = Array.from(\n new Set(\n colNames\n .map(key => key.match(/\\b([a-zA-Z_][a-zA-Z0-9_]*)\\./)?.[1])\n .filter((v): v is string => Boolean(v)) // type guard keeps only valid strings\n )\n );\n\n return {\n where: whereParts.length ? `${whereParts.join(\" AND \")}` : \"\",\n colNames,\n aliasKeys\n }\n};\n\n/** Build ORDER BY clause */\nexport const buildSqlOrderBy = (sortField: QueryList[\"sortfield\"], sortOrder: QueryList[\"sortorder\"]) =>\n sortField ? `ORDER BY ${sortField} ${sortOrder.toUpperCase()}` : \"\";\n\n/** Build LIMIT/OFFSET clause */\nexport const buildSqlLimitOffset = (limit?: QueryList[\"limit\"], offset?: QueryList[\"offset\"]) => {\n const parts: string[] = [];\n\n const _limit = Number(limit ?? 10)\n const _offset = Number(offset ?? 0)\n\n if (_limit !== undefined) parts.push(`LIMIT ${_limit}`);\n if (_offset !== undefined) parts.push(`OFFSET ${_offset}`);\n\n return parts.join(\" \");\n};\n\n/** For Injection Fields */\nexport const buildInjectionFieldsSqlSelect = (alias: string, activeInjectionFields: any[] = []) => {\n return activeInjectionFields.reduce((acc, col) => {\n\n // check the field type is decimal\n let castValue = ``\n\n if (col?.fieldType === \"numeric\") {\n castValue = `::float`\n }\n\n if (col?.fieldType === \"integer\") {\n castValue = `::int`\n }\n\n acc[`${alias}.${col?.fieldName}${castValue}`] = `inf_${col?.fieldName}`;\n return acc;\n }, {} as Record<string, string>);\n}\n\n/**\n * Executes a dynamic SQL listing query along with a count query.\n * \n * This function builds SQL SELECT and COUNT statements using the provided\n * relation maps, filters, and query options, then executes them through\n * the given Prisma model's `raw()` method.\n *\n * Commonly used for paginated data listings that require both the\n * result set and total record count.\n * \n * Returns an object containing:\n * - `data`: The paginated result set.\n * - `total`: The total count of records that match the filters.\n */\nexport const getListWithCount = async ({\n model,\n tableName,\n mainAlias,\n countKey,\n sqlRelationMaps,\n accountId,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg,\n sqlRelation,\n sqlRelationAgg,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n}: {\n model: any,\n tableName: string,\n mainAlias: string,\n countKey: string,\n sqlRelationMaps: any,\n accountId: number,\n filters: any[],\n filterColumns: any,\n sqlSelect: string[]\n sqlSelectAgg: string[],\n sqlRelation: string[]\n sqlRelationAgg: string[],\n sqlWhere: string[]\n sqlGroupBy: string[]\n sqlOrderby: string\n sqlLimitOffset: string\n}) => {\n\n const requestWhere = buildSqlWhere(filters, filterColumns)\n\n sqlWhere = [\n ...sqlWhere,\n ...(filters.length ? [requestWhere?.where] : []),\n ]\n\n // get the data (pagination)\n const sqlRaw = buildSqlRawSelect({\n tableName,\n mainAlias,\n accountId,\n sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n let data = await model.raw(sqlRaw)\n\n let aliasKeys = requestWhere?.aliasKeys\n\n let filteredArray: any = Object.entries(sqlRelationMaps)\n .filter(([key]) => aliasKeys.includes(key))\n .map(([_, value]) => value);\n\n // console.log('filteredArray', JSON.stringify(filteredArray), aliasKeys)\n\n // get the count\n const sqlRawCount = buildSqlRawSelectCount({\n tableName,\n mainAlias,\n accountId,\n sqlSelect: [`${mainAlias}.${countKey}`],\n sqlRelation: filteredArray,\n sqlWhere,\n // sqlGroupBy: [`${mainAlias}.${countKey}`],\n sqlGroupBy: [],\n sqlOrderby: ``\n })\n\n let count = await model.raw(sqlRawCount)\n\n return {\n data,\n total: Number(count[0].filtered_count)\n }\n\n}"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {
|
|
3
|
+
// ModelUserFields,
|
|
4
|
+
// ModelSchedulerLogFields,
|
|
5
|
+
// ModelSchedulerRequestFields
|
|
6
|
+
// } from "../../models"
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getDocumentProfileRelationMaps = void 0;
|
|
9
|
+
const queryBuilder_1 = require("./queryBuilder");
|
|
10
|
+
const getDocumentProfileRelationMaps = () => {
|
|
11
|
+
let relationKeys = {
|
|
12
|
+
creator: "creator",
|
|
13
|
+
updater: "updater"
|
|
14
|
+
};
|
|
15
|
+
let sqlRelationMaps = {
|
|
16
|
+
creator: (0, queryBuilder_1.buildSqlRelation)("left", "docpro", "users", "creator", ["docpro.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
17
|
+
updater: (0, queryBuilder_1.buildSqlRelation)("left", "docpro", "users", "updater", ["docpro.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"])
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
sqlRelationMaps,
|
|
21
|
+
relationKeys
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.getDocumentProfileRelationMaps = getDocumentProfileRelationMaps;
|
|
25
|
+
// export const buildSchedulerLogMainSqlSelect = () => {
|
|
26
|
+
// return {
|
|
27
|
+
// [`slog.${ModelSchedulerLogFields.scheduler_log_id}`]: "scheduler_log_id",
|
|
28
|
+
// [`slog.${ModelSchedulerLogFields.scheduler_task_id}`]: "scheduler_task_id",
|
|
29
|
+
// [`slog.${ModelSchedulerLogFields.field_module}`]: "field_module",
|
|
30
|
+
// [`slog.${ModelSchedulerLogFields.field_ref}`]: "field_ref",
|
|
31
|
+
// [`slog.${ModelSchedulerLogFields.flow_type}`]: "flow_type",
|
|
32
|
+
// [`slog.${ModelSchedulerLogFields.destination_type}`]: "destination_type",
|
|
33
|
+
// [`slog.${ModelSchedulerLogFields.destination_entity_id}`]: "destination_entity_id",
|
|
34
|
+
// [`slog.${ModelSchedulerLogFields.destination_entity_label}`]: "destination_entity_label",
|
|
35
|
+
// [`slog.${ModelSchedulerLogFields.destination_submit_payload}`]: "destination_submit_payload",
|
|
36
|
+
// [`slog.${ModelSchedulerLogFields.destination_submit_response}`]: "destination_submit_response",
|
|
37
|
+
// [`slog.${ModelSchedulerLogFields.source_type}`]: "source_type",
|
|
38
|
+
// [`slog.${ModelSchedulerLogFields.source_entity_id}`]: "source_entity_id",
|
|
39
|
+
// [`slog.${ModelSchedulerLogFields.source_entity_label}`]: "source_entity_label",
|
|
40
|
+
// [`slog.${ModelSchedulerLogFields.source_entity_data}`]: "source_entity_data",
|
|
41
|
+
// [`slog.${ModelSchedulerLogFields.log_action}`]: "log_action",
|
|
42
|
+
// [`slog.${ModelSchedulerLogFields.log_label}`]: "log_label",
|
|
43
|
+
// [`slog.${ModelSchedulerLogFields.log_message}`]: "log_message",
|
|
44
|
+
// [`slog.${ModelSchedulerLogFields.log_status}`]: "log_status",
|
|
45
|
+
// }
|
|
46
|
+
// }
|
|
47
|
+
// export const buildSchedulerRequestMainSqlSelect = () => {
|
|
48
|
+
// return {
|
|
49
|
+
// [`sreq.${ModelSchedulerRequestFields.scheduler_request_id}`]: "scheduler_request_id",
|
|
50
|
+
// [`sreq.${ModelSchedulerRequestFields.integration_id}`]: "integration_id",
|
|
51
|
+
// [`sreq.${ModelSchedulerRequestFields.field_module}`]: "field_module",
|
|
52
|
+
// [`sreq.${ModelSchedulerRequestFields.field_ref}`]: "field_ref",
|
|
53
|
+
// [`sreq.${ModelSchedulerRequestFields.source_entity_id}`]: "source_entity_id",
|
|
54
|
+
// [`sreq.${ModelSchedulerRequestFields.source_entity_label}`]: "source_entity_label",
|
|
55
|
+
// [`sreq.${ModelSchedulerRequestFields.source_entity_data}`]: "source_entity_data",
|
|
56
|
+
// [`sreq.${ModelSchedulerRequestFields.destination_entity_id}`]: "destination_entity_id",
|
|
57
|
+
// [`sreq.${ModelSchedulerRequestFields.destination_entity_label}`]: "destination_entity_label",
|
|
58
|
+
// [`sreq.${ModelSchedulerRequestFields.request_action}`]: "request_action",
|
|
59
|
+
// [`sreq.${ModelSchedulerRequestFields.attempt_datetime}`]: "attempt_datetime",
|
|
60
|
+
// [`sreq.${ModelSchedulerRequestFields.attempt_no}::float`]: "attempt_no",
|
|
61
|
+
// [`sreq.${ModelSchedulerRequestFields.attempt_result}`]: "attempt_result",
|
|
62
|
+
// [`sreq.${ModelSchedulerRequestFields.attempt_status}`]: "attempt_status",
|
|
63
|
+
// }
|
|
64
|
+
// }
|
|
65
|
+
// export const buildSchedulerLogDefaultSqlSelect = () => {
|
|
66
|
+
// return {
|
|
67
|
+
// [`slog.${ModelSchedulerLogFields.createdatetime}`]: "createdatetime",
|
|
68
|
+
// [`creator.${ModelUserFields.login_username}`]: "createusername",
|
|
69
|
+
// [`slog.${ModelSchedulerLogFields.updatedatetime}`]: "updatedatetime",
|
|
70
|
+
// [`updater.${ModelUserFields.login_username}`]: "updateusername",
|
|
71
|
+
// [`slog.${ModelSchedulerLogFields.isdelete}`]: "isdelete",
|
|
72
|
+
// [`slog.${ModelSchedulerLogFields.istrash}`]: "istrash",
|
|
73
|
+
// [`slog.${ModelSchedulerLogFields.accountid}`]: "accountid",
|
|
74
|
+
// }
|
|
75
|
+
// }
|
|
76
|
+
// export const buildSchedulerRequestDefaultSqlSelect = () => {
|
|
77
|
+
// return {
|
|
78
|
+
// [`sreq.${ModelSchedulerRequestFields.createdatetime}`]: "createdatetime",
|
|
79
|
+
// [`creator.${ModelUserFields.login_username}`]: "createusername",
|
|
80
|
+
// [`sreq.${ModelSchedulerRequestFields.updatedatetime}`]: "updatedatetime",
|
|
81
|
+
// [`updater.${ModelUserFields.login_username}`]: "updateusername",
|
|
82
|
+
// [`sreq.${ModelSchedulerRequestFields.isdelete}`]: "isdelete",
|
|
83
|
+
// [`sreq.${ModelSchedulerRequestFields.istrash}`]: "istrash",
|
|
84
|
+
// [`sreq.${ModelSchedulerRequestFields.accountid}`]: "accountid",
|
|
85
|
+
// }
|
|
86
|
+
// }
|
|
87
|
+
//# sourceMappingURL=queryDocumentProfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDocumentProfile.js","sourceRoot":"","sources":["../../../src/lib/query_builder/queryDocumentProfile.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,uBAAuB;AACvB,+BAA+B;AAC/B,kCAAkC;AAClC,oBAAoB;;;AAEpB,iDAAkD;AAE3C,MAAM,8BAA8B,GAAG,GAAG,EAAE;IAE/C,IAAI,YAAY,GAAG;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;KACrB,CAAC;IAEF,IAAI,eAAe,GAA2E;QAC1F,OAAO,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,uCAAuC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;QACjK,OAAO,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,uCAAuC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;KACpK,CAAC;IAEF,OAAO;QACH,eAAe;QACf,YAAY;KACf,CAAA;AAEL,CAAC,CAAA;AAjBY,QAAA,8BAA8B,kCAiB1C;AAED,wDAAwD;AACxD,eAAe;AACf,oFAAoF;AACpF,sFAAsF;AACtF,4EAA4E;AAC5E,sEAAsE;AACtE,sEAAsE;AACtE,oFAAoF;AACpF,8FAA8F;AAC9F,oGAAoG;AACpG,wGAAwG;AACxG,0GAA0G;AAC1G,0EAA0E;AAC1E,oFAAoF;AACpF,0FAA0F;AAC1F,wFAAwF;AACxF,wEAAwE;AACxE,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,QAAQ;AACR,IAAI;AAEJ,4DAA4D;AAC5D,eAAe;AACf,gGAAgG;AAChG,oFAAoF;AACpF,gFAAgF;AAChF,0EAA0E;AAC1E,wFAAwF;AACxF,8FAA8F;AAC9F,4FAA4F;AAC5F,kGAAkG;AAClG,wGAAwG;AACxG,oFAAoF;AACpF,wFAAwF;AACxF,mFAAmF;AACnF,oFAAoF;AACpF,oFAAoF;AACpF,QAAQ;AACR,IAAI;AAEJ,2DAA2D;AAC3D,eAAe;AACf,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,oEAAoE;AACpE,kEAAkE;AAClE,sEAAsE;AACtE,QAAQ;AACR,IAAI;AAEJ,+DAA+D;AAC/D,eAAe;AACf,oFAAoF;AACpF,2EAA2E;AAC3E,oFAAoF;AACpF,2EAA2E;AAC3E,wEAAwE;AACxE,sEAAsE;AACtE,0EAA0E;AAC1E,QAAQ;AACR,IAAI","sourcesContent":["// import {\n// ModelUserFields,\n// ModelSchedulerLogFields,\n// ModelSchedulerRequestFields\n// } from \"@/models\"\n\nimport { buildSqlRelation } from \"./queryBuilder\";\n\nexport const getDocumentProfileRelationMaps = () => {\n\n let relationKeys = {\n creator: \"creator\",\n updater: \"updater\"\n };\n\n let sqlRelationMaps: Record<keyof typeof relationKeys, ReturnType<typeof buildSqlRelation>> = {\n creator: buildSqlRelation(\"left\", \"docpro\", \"users\", \"creator\", [\"docpro.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n updater: buildSqlRelation(\"left\", \"docpro\", \"users\", \"updater\", [\"docpro.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n };\n\n return {\n sqlRelationMaps,\n relationKeys\n }\n\n}\n\n// export const buildSchedulerLogMainSqlSelect = () => {\n// return {\n// [`slog.${ModelSchedulerLogFields.scheduler_log_id}`]: \"scheduler_log_id\",\n// [`slog.${ModelSchedulerLogFields.scheduler_task_id}`]: \"scheduler_task_id\",\n// [`slog.${ModelSchedulerLogFields.field_module}`]: \"field_module\",\n// [`slog.${ModelSchedulerLogFields.field_ref}`]: \"field_ref\",\n// [`slog.${ModelSchedulerLogFields.flow_type}`]: \"flow_type\",\n// [`slog.${ModelSchedulerLogFields.destination_type}`]: \"destination_type\",\n// [`slog.${ModelSchedulerLogFields.destination_entity_id}`]: \"destination_entity_id\",\n// [`slog.${ModelSchedulerLogFields.destination_entity_label}`]: \"destination_entity_label\",\n// [`slog.${ModelSchedulerLogFields.destination_submit_payload}`]: \"destination_submit_payload\",\n// [`slog.${ModelSchedulerLogFields.destination_submit_response}`]: \"destination_submit_response\",\n// [`slog.${ModelSchedulerLogFields.source_type}`]: \"source_type\",\n// [`slog.${ModelSchedulerLogFields.source_entity_id}`]: \"source_entity_id\",\n// [`slog.${ModelSchedulerLogFields.source_entity_label}`]: \"source_entity_label\",\n// [`slog.${ModelSchedulerLogFields.source_entity_data}`]: \"source_entity_data\",\n// [`slog.${ModelSchedulerLogFields.log_action}`]: \"log_action\",\n// [`slog.${ModelSchedulerLogFields.log_label}`]: \"log_label\",\n// [`slog.${ModelSchedulerLogFields.log_message}`]: \"log_message\",\n// [`slog.${ModelSchedulerLogFields.log_status}`]: \"log_status\",\n// }\n// }\n\n// export const buildSchedulerRequestMainSqlSelect = () => {\n// return {\n// [`sreq.${ModelSchedulerRequestFields.scheduler_request_id}`]: \"scheduler_request_id\",\n// [`sreq.${ModelSchedulerRequestFields.integration_id}`]: \"integration_id\",\n// [`sreq.${ModelSchedulerRequestFields.field_module}`]: \"field_module\",\n// [`sreq.${ModelSchedulerRequestFields.field_ref}`]: \"field_ref\",\n// [`sreq.${ModelSchedulerRequestFields.source_entity_id}`]: \"source_entity_id\",\n// [`sreq.${ModelSchedulerRequestFields.source_entity_label}`]: \"source_entity_label\",\n// [`sreq.${ModelSchedulerRequestFields.source_entity_data}`]: \"source_entity_data\",\n// [`sreq.${ModelSchedulerRequestFields.destination_entity_id}`]: \"destination_entity_id\",\n// [`sreq.${ModelSchedulerRequestFields.destination_entity_label}`]: \"destination_entity_label\",\n// [`sreq.${ModelSchedulerRequestFields.request_action}`]: \"request_action\",\n// [`sreq.${ModelSchedulerRequestFields.attempt_datetime}`]: \"attempt_datetime\",\n// [`sreq.${ModelSchedulerRequestFields.attempt_no}::float`]: \"attempt_no\",\n// [`sreq.${ModelSchedulerRequestFields.attempt_result}`]: \"attempt_result\",\n// [`sreq.${ModelSchedulerRequestFields.attempt_status}`]: \"attempt_status\",\n// }\n// }\n\n// export const buildSchedulerLogDefaultSqlSelect = () => {\n// return {\n// [`slog.${ModelSchedulerLogFields.createdatetime}`]: \"createdatetime\",\n// [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n// [`slog.${ModelSchedulerLogFields.updatedatetime}`]: \"updatedatetime\",\n// [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n// [`slog.${ModelSchedulerLogFields.isdelete}`]: \"isdelete\",\n// [`slog.${ModelSchedulerLogFields.istrash}`]: \"istrash\",\n// [`slog.${ModelSchedulerLogFields.accountid}`]: \"accountid\",\n// }\n// }\n\n// export const buildSchedulerRequestDefaultSqlSelect = () => {\n// return {\n// [`sreq.${ModelSchedulerRequestFields.createdatetime}`]: \"createdatetime\",\n// [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n// [`sreq.${ModelSchedulerRequestFields.updatedatetime}`]: \"updatedatetime\",\n// [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n// [`sreq.${ModelSchedulerRequestFields.isdelete}`]: \"isdelete\",\n// [`sreq.${ModelSchedulerRequestFields.istrash}`]: \"istrash\",\n// [`sreq.${ModelSchedulerRequestFields.accountid}`]: \"accountid\",\n// }\n// }"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {
|
|
3
|
+
// ModelUserFields,
|
|
4
|
+
// ModelSchedulerLogFields,
|
|
5
|
+
// ModelSchedulerRequestFields
|
|
6
|
+
// } from "../../models"
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getUserBranchRelationMaps = void 0;
|
|
9
|
+
const queryBuilder_1 = require("./queryBuilder");
|
|
10
|
+
const getUserBranchRelationMaps = () => {
|
|
11
|
+
let relationKeys = {
|
|
12
|
+
cou: "cou",
|
|
13
|
+
state: "state",
|
|
14
|
+
area: "area",
|
|
15
|
+
creator: "creator",
|
|
16
|
+
updater: "updater"
|
|
17
|
+
};
|
|
18
|
+
let sqlRelationMaps = {
|
|
19
|
+
cou: (0, queryBuilder_1.buildSqlRelation)("left", "brn", "countries", "cou", ["brn.country_id = cou.country_id", "cou.isdelete = false", "cou.istrash = false"]),
|
|
20
|
+
state: (0, queryBuilder_1.buildSqlRelation)("left", "brn", "states", "state", ["brn.state_id = state.state_id", "state.isdelete = false", "state.istrash = false"]),
|
|
21
|
+
area: (0, queryBuilder_1.buildSqlRelation)("left", "brn", "areas", "area", ["brn.area_id = area.area_id", "area.isdelete = false", "area.istrash = false"]),
|
|
22
|
+
creator: (0, queryBuilder_1.buildSqlRelation)("left", "brn", "users", "creator", ["brn.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
23
|
+
updater: (0, queryBuilder_1.buildSqlRelation)("left", "brn", "users", "updater", ["brn.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"])
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
sqlRelationMaps,
|
|
27
|
+
relationKeys
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.getUserBranchRelationMaps = getUserBranchRelationMaps;
|
|
31
|
+
//# sourceMappingURL=queryUserBranch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryUserBranch.js","sourceRoot":"","sources":["../../../src/lib/query_builder/queryUserBranch.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,uBAAuB;AACvB,+BAA+B;AAC/B,kCAAkC;AAClC,oBAAoB;;;AAEpB,iDAAkD;AAE3C,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAE1C,IAAI,YAAY,GAAG;QACf,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;KACrB,CAAC;IAEF,IAAI,eAAe,GAA2E;QAC1F,GAAG,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iCAAiC,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QAC5I,KAAK,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,+BAA+B,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,CAAC;QAC/I,IAAI,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,4BAA4B,EAAE,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;QACvI,OAAO,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,oCAAoC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;QAC3J,OAAO,EAAE,IAAA,+BAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,oCAAoC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;KAC9J,CAAC;IAEF,OAAO;QACH,eAAe;QACf,YAAY;KACf,CAAA;AAEL,CAAC,CAAA;AAvBY,QAAA,yBAAyB,6BAuBrC","sourcesContent":["// import {\n// ModelUserFields,\n// ModelSchedulerLogFields,\n// ModelSchedulerRequestFields\n// } from \"@/models\"\n\nimport { buildSqlRelation } from \"./queryBuilder\";\n\nexport const getUserBranchRelationMaps = () => {\n\n let relationKeys = {\n cou: \"cou\",\n state: \"state\",\n area: \"area\",\n creator: \"creator\",\n updater: \"updater\"\n };\n\n let sqlRelationMaps: Record<keyof typeof relationKeys, ReturnType<typeof buildSqlRelation>> = {\n cou: buildSqlRelation(\"left\", \"brn\", \"countries\", \"cou\", [\"brn.country_id = cou.country_id\", \"cou.isdelete = false\", \"cou.istrash = false\"]),\n state: buildSqlRelation(\"left\", \"brn\", \"states\", \"state\", [\"brn.state_id = state.state_id\", \"state.isdelete = false\", \"state.istrash = false\"]),\n area: buildSqlRelation(\"left\", \"brn\", \"areas\", \"area\", [\"brn.area_id = area.area_id\", \"area.isdelete = false\", \"area.istrash = false\"]),\n creator: buildSqlRelation(\"left\", \"brn\", \"users\", \"creator\", [\"brn.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n updater: buildSqlRelation(\"left\", \"brn\", \"users\", \"updater\", [\"brn.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n };\n\n return {\n sqlRelationMaps,\n relationKeys\n }\n\n}\n"]}
|
|
@@ -45,9 +45,9 @@ export type UserBranchUpdateProps = {
|
|
|
45
45
|
};
|
|
46
46
|
export declare const UserBranchService: (props: UserBranchServiceProps) => {
|
|
47
47
|
getUserBranch: ({ userBranchId, datatypes }: UserBranchGetProps) => Promise<any>;
|
|
48
|
-
getUserBranchByUserId: ({ userId, onlyHQ, limit, datatypes }: UserBranchByUserIdGetProps) => Promise<any
|
|
48
|
+
getUserBranchByUserId: ({ userId, onlyHQ, limit, datatypes }: UserBranchByUserIdGetProps) => Promise<any>;
|
|
49
49
|
listUserBranches: ({ limit, offset, filters, sortfield, sortorder, datatypes }: UserBranchListProps) => Promise<{
|
|
50
|
-
data: any
|
|
50
|
+
data: any;
|
|
51
51
|
total: number;
|
|
52
52
|
}>;
|
|
53
53
|
getUserBranchDataTypes: () => any[];
|
|
@@ -76,6 +76,7 @@ let defaultSqlSelect = {
|
|
|
76
76
|
[`brn.${models_1.ModelUserBranchFields.istrash}`]: "istrash",
|
|
77
77
|
[`brn.${models_1.ModelUserBranchFields.accountid}`]: "accountid",
|
|
78
78
|
};
|
|
79
|
+
const { relationKeys, sqlRelationMaps } = (0, lib_1.getUserBranchRelationMaps)();
|
|
79
80
|
const UserBranchService = (props) => {
|
|
80
81
|
const { userBranchType = "branch", ...rest } = props;
|
|
81
82
|
const userBranchModel = (0, models_1.UserBranchModel)({ ...rest });
|
|
@@ -143,12 +144,19 @@ const UserBranchService = (props) => {
|
|
|
143
144
|
(0, lib_1.buildSqlSelect)(``, regionSqlSelect),
|
|
144
145
|
(0, lib_1.buildSqlSelect)(``, defaultSqlSelect)
|
|
145
146
|
];
|
|
147
|
+
// sqlRelation = [
|
|
148
|
+
// buildSqlRelation("left", "brn", "countries", "cou", ["brn.country_id = cou.country_id", "cou.isdelete = false", "cou.istrash = false"]),
|
|
149
|
+
// buildSqlRelation("left", "brn", "states", "state", ["brn.state_id = state.state_id", "state.isdelete = false", "state.istrash = false"]),
|
|
150
|
+
// buildSqlRelation("left", "brn", "areas", "area", ["brn.area_id = area.area_id", "area.isdelete = false", "area.istrash = false"]),
|
|
151
|
+
// buildSqlRelation("left", "brn", "users", "creator", ["brn.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
152
|
+
// buildSqlRelation("left", "brn", "users", "updater", ["brn.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"])
|
|
153
|
+
// ]
|
|
146
154
|
sqlRelation = [
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
155
|
+
sqlRelationMaps.cou,
|
|
156
|
+
sqlRelationMaps.state,
|
|
157
|
+
sqlRelationMaps.area,
|
|
158
|
+
sqlRelationMaps.creator,
|
|
159
|
+
sqlRelationMaps.updater
|
|
152
160
|
];
|
|
153
161
|
// sqlRelationAgg = [
|
|
154
162
|
// buildSqlRelation("left", "brn", "document_items", "docitm", ["brn.document_id = docitm.document_id", "docitm.isdelete = false", "docitm.istrash = false"]),
|
|
@@ -192,33 +200,56 @@ const UserBranchService = (props) => {
|
|
|
192
200
|
let sqlOrderby = (0, lib_1.buildSqlOrderBy)(sortfield, sortorder);
|
|
193
201
|
let sqlLimitOffset = (0, lib_1.buildSqlLimitOffset)(limit, offset);
|
|
194
202
|
// get the data (pagination)
|
|
195
|
-
const sqlRaw =
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
})
|
|
206
|
-
let data = await userBranchModel.raw(sqlRaw)
|
|
207
|
-
// get the count
|
|
208
|
-
const sqlRawCount =
|
|
203
|
+
// const sqlRaw = buildSqlRawSelect({
|
|
204
|
+
// tableName: "branches",
|
|
205
|
+
// mainAlias: "brn",
|
|
206
|
+
// accountId: rest.accountId,
|
|
207
|
+
// sqlSelect: [...sqlSelect, ...sqlSelectAgg],
|
|
208
|
+
// sqlRelation: [...sqlRelation, ...sqlRelationAgg],
|
|
209
|
+
// sqlWhere,
|
|
210
|
+
// sqlGroupBy,
|
|
211
|
+
// sqlOrderby,
|
|
212
|
+
// sqlLimitOffset
|
|
213
|
+
// })
|
|
214
|
+
// let data = await userBranchModel.raw(sqlRaw)
|
|
215
|
+
// // get the count
|
|
216
|
+
// const sqlRawCount = buildSqlRawSelectCount({
|
|
217
|
+
// tableName: "branches",
|
|
218
|
+
// mainAlias: "brn",
|
|
219
|
+
// accountId: rest.accountId,
|
|
220
|
+
// sqlSelect,
|
|
221
|
+
// sqlRelation,
|
|
222
|
+
// sqlWhere,
|
|
223
|
+
// sqlGroupBy,
|
|
224
|
+
// sqlOrderby
|
|
225
|
+
// })
|
|
226
|
+
// let count = await userBranchModel.raw(sqlRawCount)
|
|
227
|
+
// const response = {
|
|
228
|
+
// data,
|
|
229
|
+
// total: data.length ? Number(count[0].filtered_count) : 0
|
|
230
|
+
// }
|
|
231
|
+
// get the listing data & count
|
|
232
|
+
const { data, total } = await (0, lib_1.getListWithCount)({
|
|
233
|
+
model: userBranchModel,
|
|
209
234
|
tableName: "branches",
|
|
210
235
|
mainAlias: "brn",
|
|
236
|
+
countKey: `${models_1.ModelUserBranchFields.branch_id}`,
|
|
211
237
|
accountId: rest.accountId,
|
|
238
|
+
sqlRelationMaps,
|
|
239
|
+
filters,
|
|
240
|
+
filterColumns,
|
|
212
241
|
sqlSelect,
|
|
242
|
+
sqlSelectAgg,
|
|
213
243
|
sqlRelation,
|
|
244
|
+
sqlRelationAgg,
|
|
214
245
|
sqlWhere,
|
|
215
246
|
sqlGroupBy,
|
|
216
|
-
sqlOrderby
|
|
247
|
+
sqlOrderby,
|
|
248
|
+
sqlLimitOffset
|
|
217
249
|
});
|
|
218
|
-
let count = await userBranchModel.raw(sqlRawCount);
|
|
219
250
|
const response = {
|
|
220
251
|
data,
|
|
221
|
-
total
|
|
252
|
+
total
|
|
222
253
|
};
|
|
223
254
|
return response;
|
|
224
255
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserBranchService.js","sourceRoot":"","sources":["../../../src/services/branch/UserBranchService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n UserBranchModel,\n ModelUserFields,\n ModelUserBranchFields,\n ModelCountryFields,\n ModelStateFields,\n ModelAreaFields\n} from \"@/models\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect, buildSqlRawSelectCount } from \"@/lib\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\nimport { DefaultServiceProps } from \"@/utils\";\n\nexport const userBranchUserTypes = {\n customer: \"customer\",\n retailer: \"retailer\"\n}\n\nexport const userBranchTypes = {\n branch: \"branch\",\n branch_shipping: \"branch_shipping\",\n shipping_address: \"shipping_address\"\n} as const\n\nexport type UserBranchType = typeof userBranchTypes[keyof typeof userBranchTypes]\n\nexport type UserBranchUserType = typeof userBranchUserTypes[keyof typeof userBranchUserTypes]\n\nexport type UserBranchServiceProps = DefaultServiceProps & {\n userBranchUserType: UserBranchUserType,\n userBranchType: UserBranchType,\n};\n\nexport type UserBranchGetProps = QueryGet & {\n userBranchId: number,\n};\n\nexport type UserBranchByUserIdGetProps = QueryGet & {\n userId: number,\n onlyHQ?: boolean\n limit?: number\n};\n\nexport type UserBranchListProps = QueryList & {\n // id: number,\n};\n\nexport type UserBranchRemoveProps = {\n userBranchIds: number[]\n};\n\nexport type UserBranchCreateProps = {\n userBranchType?: UserBranchType,\n data:\n // driver_image\n {\n administrator: {\n filename: string;\n // contentType: string;\n // bucketName: string;\n // projectId: string;\n // foldernameYear: string;\n // foldernameMonth: string;\n // foldernameDay: string;\n // uploadType: FileUploadType,\n // bufferFilename: string,\n // assetUrl: string,\n // referenceId: string,\n // referenceLabel: string,\n // referenceType: string,\n // batchCode?: string,\n // fileSizeBytes: number,\n // fileCompressFormat: FileCompressFormat,\n // requestFileSizeBytes: number,\n // requestFilename: string,\n // reference2Id: string,\n // reference2Label: string,\n // reference2Type: string,\n }\n }\n}\n\nexport type UserBranchUpdateProps = {\n userBranchType?: UserBranchType,\n data:\n // driver_image\n {\n administrator: {\n filename: string;\n // contentType: string;\n // bucketName: string;\n // projectId: string;\n // foldernameYear: string;\n // foldernameMonth: string;\n // foldernameDay: string;\n // uploadType: FileUploadType,\n // bufferFilename: string,\n // assetUrl: string,\n // referenceId: string,\n // referenceLabel: string,\n // referenceType: string,\n // batchCode?: string,\n // fileSizeBytes: number,\n // fileCompressFormat: FileCompressFormat,\n // requestFileSizeBytes: number,\n // requestFilename: string,\n // reference2Id: string,\n // reference2Label: string,\n // reference2Type: string,\n }\n }\n}\n\n// const getCreatePayload = (branchType: BranchType, data: UserBranchCreateProps[\"data\"]) => {\n\n// if (branchType === \"administrator\" && \"administrator\" in data) {\n\n// return {\n// user_type: branchType,\n// // file_name: data.driverImage.filename,\n// // content_type: data.driverImage.contentType,\n// // bucket_name: data.driverImage.bucketName,\n// // project_id: data.driverImage.projectId,\n// // foldername_year: data.driverImage.foldernameYear,\n// // foldername_month: data.driverImage.foldernameMonth,\n// // foldername_day: data.driverImage.foldernameDay,\n// // upload_type: data.driverImage.uploadType,\n// // buffer_file_name: data.driverImage.bufferFilename,\n// // asset_url: data.driverImage.assetUrl,\n// // reference_id: data.driverImage.referenceId,\n// // reference_label: data.driverImage.referenceLabel,\n// // reference_type: data.driverImage.referenceType,\n// // batch_code: data?.driverImage?.batchCode ?? \"\",\n// // file_size_bytes: data.driverImage.fileSizeBytes,\n// // file_compress_format: data.driverImage.fileCompressFormat,\n// // request_file_size_bytes: data.driverImage.requestFileSizeBytes,\n// // request_file_name: data.driverImage.requestFilename,\n// // reference2_id: data.driverImage.reference2Id,\n// // reference2_label: data.driverImage.reference2Label,\n// // reference2_type: data.driverImage.reference2Type,\n// }\n// }\n\n// return false\n\n// }\n\nlet mainSqlSelect = {\n [`brn.${ModelUserBranchFields.branch_id}`]: \"branch_id\",\n [`brn.${ModelUserBranchFields.user_id}`]: \"user_id\",\n [`brn.${ModelUserBranchFields.area_id}`]: \"area_id\",\n [`brn.${ModelUserBranchFields.state_id}`]: \"state_id\",\n [`brn.${ModelUserBranchFields.country_id}`]: \"country_id\",\n [`brn.${ModelUserBranchFields.address_1}`]: \"address_1\",\n [`brn.${ModelUserBranchFields.address_2}`]: \"address_2\",\n [`brn.${ModelUserBranchFields.branch_code}`]: \"branch_code\",\n [`brn.${ModelUserBranchFields.branch_contact}`]: \"branch_contact\",\n [`brn.${ModelUserBranchFields.branch_email}`]: \"branch_email\",\n [`brn.${ModelUserBranchFields.branch_name}`]: \"branch_name\",\n [`brn.${ModelUserBranchFields.status}`]: \"status\",\n [`brn.${ModelUserBranchFields.is_hq}`]: \"is_hq\",\n [`brn.${ModelUserBranchFields.pic_contact}`]: \"pic_contact\",\n [`brn.${ModelUserBranchFields.pic_email}`]: \"pic_email\",\n [`brn.${ModelUserBranchFields.pic_name}`]: \"pic_name\",\n [`brn.${ModelUserBranchFields.postcode}`]: \"postcode\",\n [`brn.${ModelUserBranchFields.remark}`]: \"remark\",\n [`brn.${ModelUserBranchFields.type}`]: \"type\",\n}\n\nlet regionSqlSelect = {\n [`cou.${ModelCountryFields.country_name}`]: \"country_name\",\n [`state.${ModelStateFields.state_name}`]: \"state_name\",\n [`area.${ModelAreaFields.area_name}`]: \"area_name\",\n}\n\nlet defaultSqlSelect = {\n [`brn.${ModelUserBranchFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`brn.${ModelUserBranchFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`brn.${ModelUserBranchFields.isdelete}`]: \"isdelete\",\n [`brn.${ModelUserBranchFields.istrash}`]: \"istrash\",\n [`brn.${ModelUserBranchFields.accountid}`]: \"accountid\",\n}\n\nexport const UserBranchService = (props: UserBranchServiceProps) => {\n\n const {\n userBranchType = \"branch\",\n ...rest\n } = props\n\n const userBranchModel = UserBranchModel({ ...rest })\n\n // const createUserBranch = async ({ data, branchType: overrideBranchType }: UserBranchCreateProps) => {\n\n // const _branchType = overrideBranchType || branchType\n\n // const _data = getCreatePayload(_branchType, data)\n\n // if (!_data) {\n // throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);\n // }\n\n // const response = await userModel.create({ data: _data, createUserId: 0 })\n\n // return response\n // }\n\n const getUserBranch = async ({ userBranchId, datatypes = [] }: UserBranchGetProps) => {\n\n // let data: any = {}\n\n // if (branchType === \"branch\") {\n // // data = await customerService.getCustomer({ id, datatypes: datatypes as CustomerGetProps[\"datatypes\"] })\n // }\n\n // if (branchType === \"branch_shipping\") {\n // // data = await administratorService.getAdministrator({ id, })\n // }\n\n // if (branchType === \"shipping_address\") {\n // // data = await administratorService.getAdministrator({ id, })\n // }\n\n let { data } = await listUserBranches({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelUserBranchFields.branch_id}`, operator: \"=\", value: userBranchId }],\n sortfield: `${ModelUserBranchFields.branch_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n // if (!data) {\n // throw new Error(`Invalid id: ${id}`);\n // }\n\n return data\n };\n\n const getUserBranchByUserId = async ({ userId, onlyHQ = false, limit = 100, datatypes = [] }: UserBranchByUserIdGetProps) => {\n\n let filters = [\n { field: `${ModelUserBranchFields.user_id}`, operator: \"=\", value: userId }\n ] as any\n\n if (onlyHQ === true) {\n filters.push({\n field: `${ModelUserBranchFields.is_hq}`, operator: \"=\", value: 1\n })\n }\n\n let { data } = await listUserBranches({\n limit,\n offset: 0,\n filters,\n sortfield: `${ModelUserBranchFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data\n };\n\n const listUserBranches = async ({\n limit,\n offset,\n filters = [],\n sortfield,\n sortorder,\n datatypes = []\n }: UserBranchListProps) => {\n\n let sqlSelect: string[] = []\n let sqlRelation: string[] = []\n let sqlGroupBy: string[] = []\n\n let sqlSelectAgg: string[] = []\n let sqlRelationAgg: string[] = []\n\n sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, regionSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n sqlRelation = [\n buildSqlRelation(\"left\", \"brn\", \"countries\", \"cou\", [\"brn.country_id = cou.country_id\", \"cou.isdelete = false\", \"cou.istrash = false\"]),\n buildSqlRelation(\"left\", \"brn\", \"states\", \"state\", [\"brn.state_id = state.state_id\", \"state.isdelete = false\", \"state.istrash = false\"]),\n buildSqlRelation(\"left\", \"brn\", \"areas\", \"area\", [\"brn.area_id = area.area_id\", \"area.isdelete = false\", \"area.istrash = false\"]),\n buildSqlRelation(\"left\", \"brn\", \"users\", \"creator\", [\"brn.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"brn\", \"users\", \"updater\", [\"brn.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n // sqlRelationAgg = [\n // buildSqlRelation(\"left\", \"brn\", \"document_items\", \"docitm\", [\"brn.document_id = docitm.document_id\", \"docitm.isdelete = false\", \"docitm.istrash = false\"]),\n // ]\n\n sqlGroupBy = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(regionSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...regionSqlSelect,\n ...defaultSqlSelect\n }\n\n // if (datatypes.includes(salesOrderDataTypes.salesOrderInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"document\", documentTypeKey.toLowerCase() as any)\n\n // const salesOrderInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"dif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...salesOrderInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, salesOrderInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"brn\", \"document_injection_fields\", \"dif\", [\"brn.document_id = dif.document_id\", \"dif.field_ref = 'document'\", `dif.field_module = '${documentTypeKey.toLowerCase()}'`, \"dif.isdelete = false\", \"dif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(salesOrderInjectionFieldSqlSelect)]\n // }\n\n // let itemSqlSelectAgg = buildDocumentItemSqlSelectAgg()\n\n // if (datatypes.includes(salesOrderDataTypes.salesOrderItemInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"document_item\", documentTypeKey.toLowerCase() as any)\n\n // const salesOrderItemInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"difi\", activeInjectionFields)\n\n // if (Object.entries(salesOrderItemInjectionFieldSqlSelect).length > 0) {\n // Object.entries(salesOrderItemInjectionFieldSqlSelect).map(([col, alias]) => {\n // itemSqlSelectAgg.push(`'${alias}', ${col}`)\n // })\n // }\n\n // sqlRelationAgg = [...sqlRelationAgg, buildSqlRelation(\"left\", \"docitm\", \"document_injection_fields\", \"difi\", [\"docitm.document_item_id = difi.document_item_id\", \"difi.field_ref = 'document_item'\", `difi.field_module = '${documentTypeKey.toLowerCase()}'`, \"difi.isdelete = false\", \"difi.istrash = false\"])]\n\n // }\n\n // let itemSqlSelect = buildDocumentItemSqlSelect(itemSqlSelectAgg)\n\n // sqlSelectAgg = [...sqlSelectAgg, ...[buildSqlSelect(``, itemSqlSelect)]]\n\n let sqlWhere = [\n `brn.isdelete = false`,\n `brn.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the data (pagination)\n const sqlRaw = buildSqlRawSelect({\n tableName: \"branches\",\n mainAlias: \"brn\",\n accountId: rest.accountId,\n sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n let data = await userBranchModel.raw(sqlRaw)\n\n // get the count\n const sqlRawCount = buildSqlRawSelectCount({\n tableName: \"branches\",\n mainAlias: \"brn\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby\n })\n\n let count = await userBranchModel.raw(sqlRawCount)\n\n const response = {\n data,\n total: data.length ? Number(count[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n // const removeUserBranches = async ({ userBranchIds }: UserBranchRemoveProps): Promise<User[] | null> => {\n\n // if (!userBranchIds.length) throwError('id is required');\n\n // const response = await userModel.trash({ userBranchIds, updateUserId: actionUserId });\n\n // return response\n // };\n\n const getUserBranchDataTypes = () => {\n\n let data: any[] = [];\n let total = 0;\n\n if (userBranchType === \"branch\") {\n // data = customerService.getDataTypes()\n }\n\n // const data = await userModel.list(payload);\n\n // if (!data?.file_id) {\n // throw new Error(`Invalid id: ${id}`);\n // }\n\n return data\n };\n\n return {\n // uploadFileByBuffer,\n getUserBranch,\n getUserBranchByUserId,\n listUserBranches,\n // removeUsers,\n getUserBranchDataTypes\n }\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"UserBranchService.js","sourceRoot":"","sources":["../../../src/services/branch/UserBranchService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n UserBranchModel,\n ModelUserFields,\n ModelUserBranchFields,\n ModelCountryFields,\n ModelStateFields,\n ModelAreaFields\n} from \"@/models\";\n\nimport { buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, getListWithCount, getUserBranchRelationMaps } from \"@/lib\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\nimport { DefaultServiceProps } from \"@/utils\";\n\nexport const userBranchUserTypes = {\n customer: \"customer\",\n retailer: \"retailer\"\n}\n\nexport const userBranchTypes = {\n branch: \"branch\",\n branch_shipping: \"branch_shipping\",\n shipping_address: \"shipping_address\"\n} as const\n\nexport type UserBranchType = typeof userBranchTypes[keyof typeof userBranchTypes]\n\nexport type UserBranchUserType = typeof userBranchUserTypes[keyof typeof userBranchUserTypes]\n\nexport type UserBranchServiceProps = DefaultServiceProps & {\n userBranchUserType: UserBranchUserType,\n userBranchType: UserBranchType,\n};\n\nexport type UserBranchGetProps = QueryGet & {\n userBranchId: number,\n};\n\nexport type UserBranchByUserIdGetProps = QueryGet & {\n userId: number,\n onlyHQ?: boolean\n limit?: number\n};\n\nexport type UserBranchListProps = QueryList & {\n // id: number,\n};\n\nexport type UserBranchRemoveProps = {\n userBranchIds: number[]\n};\n\nexport type UserBranchCreateProps = {\n userBranchType?: UserBranchType,\n data:\n // driver_image\n {\n administrator: {\n filename: string;\n // contentType: string;\n // bucketName: string;\n // projectId: string;\n // foldernameYear: string;\n // foldernameMonth: string;\n // foldernameDay: string;\n // uploadType: FileUploadType,\n // bufferFilename: string,\n // assetUrl: string,\n // referenceId: string,\n // referenceLabel: string,\n // referenceType: string,\n // batchCode?: string,\n // fileSizeBytes: number,\n // fileCompressFormat: FileCompressFormat,\n // requestFileSizeBytes: number,\n // requestFilename: string,\n // reference2Id: string,\n // reference2Label: string,\n // reference2Type: string,\n }\n }\n}\n\nexport type UserBranchUpdateProps = {\n userBranchType?: UserBranchType,\n data:\n // driver_image\n {\n administrator: {\n filename: string;\n // contentType: string;\n // bucketName: string;\n // projectId: string;\n // foldernameYear: string;\n // foldernameMonth: string;\n // foldernameDay: string;\n // uploadType: FileUploadType,\n // bufferFilename: string,\n // assetUrl: string,\n // referenceId: string,\n // referenceLabel: string,\n // referenceType: string,\n // batchCode?: string,\n // fileSizeBytes: number,\n // fileCompressFormat: FileCompressFormat,\n // requestFileSizeBytes: number,\n // requestFilename: string,\n // reference2Id: string,\n // reference2Label: string,\n // reference2Type: string,\n }\n }\n}\n\n// const getCreatePayload = (branchType: BranchType, data: UserBranchCreateProps[\"data\"]) => {\n\n// if (branchType === \"administrator\" && \"administrator\" in data) {\n\n// return {\n// user_type: branchType,\n// // file_name: data.driverImage.filename,\n// // content_type: data.driverImage.contentType,\n// // bucket_name: data.driverImage.bucketName,\n// // project_id: data.driverImage.projectId,\n// // foldername_year: data.driverImage.foldernameYear,\n// // foldername_month: data.driverImage.foldernameMonth,\n// // foldername_day: data.driverImage.foldernameDay,\n// // upload_type: data.driverImage.uploadType,\n// // buffer_file_name: data.driverImage.bufferFilename,\n// // asset_url: data.driverImage.assetUrl,\n// // reference_id: data.driverImage.referenceId,\n// // reference_label: data.driverImage.referenceLabel,\n// // reference_type: data.driverImage.referenceType,\n// // batch_code: data?.driverImage?.batchCode ?? \"\",\n// // file_size_bytes: data.driverImage.fileSizeBytes,\n// // file_compress_format: data.driverImage.fileCompressFormat,\n// // request_file_size_bytes: data.driverImage.requestFileSizeBytes,\n// // request_file_name: data.driverImage.requestFilename,\n// // reference2_id: data.driverImage.reference2Id,\n// // reference2_label: data.driverImage.reference2Label,\n// // reference2_type: data.driverImage.reference2Type,\n// }\n// }\n\n// return false\n\n// }\n\nlet mainSqlSelect = {\n [`brn.${ModelUserBranchFields.branch_id}`]: \"branch_id\",\n [`brn.${ModelUserBranchFields.user_id}`]: \"user_id\",\n [`brn.${ModelUserBranchFields.area_id}`]: \"area_id\",\n [`brn.${ModelUserBranchFields.state_id}`]: \"state_id\",\n [`brn.${ModelUserBranchFields.country_id}`]: \"country_id\",\n [`brn.${ModelUserBranchFields.address_1}`]: \"address_1\",\n [`brn.${ModelUserBranchFields.address_2}`]: \"address_2\",\n [`brn.${ModelUserBranchFields.branch_code}`]: \"branch_code\",\n [`brn.${ModelUserBranchFields.branch_contact}`]: \"branch_contact\",\n [`brn.${ModelUserBranchFields.branch_email}`]: \"branch_email\",\n [`brn.${ModelUserBranchFields.branch_name}`]: \"branch_name\",\n [`brn.${ModelUserBranchFields.status}`]: \"status\",\n [`brn.${ModelUserBranchFields.is_hq}`]: \"is_hq\",\n [`brn.${ModelUserBranchFields.pic_contact}`]: \"pic_contact\",\n [`brn.${ModelUserBranchFields.pic_email}`]: \"pic_email\",\n [`brn.${ModelUserBranchFields.pic_name}`]: \"pic_name\",\n [`brn.${ModelUserBranchFields.postcode}`]: \"postcode\",\n [`brn.${ModelUserBranchFields.remark}`]: \"remark\",\n [`brn.${ModelUserBranchFields.type}`]: \"type\",\n}\n\nlet regionSqlSelect = {\n [`cou.${ModelCountryFields.country_name}`]: \"country_name\",\n [`state.${ModelStateFields.state_name}`]: \"state_name\",\n [`area.${ModelAreaFields.area_name}`]: \"area_name\",\n}\n\nlet defaultSqlSelect = {\n [`brn.${ModelUserBranchFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`brn.${ModelUserBranchFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`brn.${ModelUserBranchFields.isdelete}`]: \"isdelete\",\n [`brn.${ModelUserBranchFields.istrash}`]: \"istrash\",\n [`brn.${ModelUserBranchFields.accountid}`]: \"accountid\",\n}\n\nconst { relationKeys, sqlRelationMaps } = getUserBranchRelationMaps()\n\nexport const UserBranchService = (props: UserBranchServiceProps) => {\n\n const {\n userBranchType = \"branch\",\n ...rest\n } = props\n\n const userBranchModel = UserBranchModel({ ...rest })\n\n // const createUserBranch = async ({ data, branchType: overrideBranchType }: UserBranchCreateProps) => {\n\n // const _branchType = overrideBranchType || branchType\n\n // const _data = getCreatePayload(_branchType, data)\n\n // if (!_data) {\n // throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);\n // }\n\n // const response = await userModel.create({ data: _data, createUserId: 0 })\n\n // return response\n // }\n\n const getUserBranch = async ({ userBranchId, datatypes = [] }: UserBranchGetProps) => {\n\n // let data: any = {}\n\n // if (branchType === \"branch\") {\n // // data = await customerService.getCustomer({ id, datatypes: datatypes as CustomerGetProps[\"datatypes\"] })\n // }\n\n // if (branchType === \"branch_shipping\") {\n // // data = await administratorService.getAdministrator({ id, })\n // }\n\n // if (branchType === \"shipping_address\") {\n // // data = await administratorService.getAdministrator({ id, })\n // }\n\n let { data } = await listUserBranches({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelUserBranchFields.branch_id}`, operator: \"=\", value: userBranchId }],\n sortfield: `${ModelUserBranchFields.branch_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n // if (!data) {\n // throw new Error(`Invalid id: ${id}`);\n // }\n\n return data\n };\n\n const getUserBranchByUserId = async ({ userId, onlyHQ = false, limit = 100, datatypes = [] }: UserBranchByUserIdGetProps) => {\n\n let filters = [\n { field: `${ModelUserBranchFields.user_id}`, operator: \"=\", value: userId }\n ] as any\n\n if (onlyHQ === true) {\n filters.push({\n field: `${ModelUserBranchFields.is_hq}`, operator: \"=\", value: 1\n })\n }\n\n let { data } = await listUserBranches({\n limit,\n offset: 0,\n filters,\n sortfield: `${ModelUserBranchFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data\n };\n\n const listUserBranches = async ({\n limit,\n offset,\n filters = [],\n sortfield,\n sortorder,\n datatypes = []\n }: UserBranchListProps) => {\n\n let sqlSelect: string[] = []\n let sqlRelation: string[] = []\n let sqlGroupBy: string[] = []\n\n let sqlSelectAgg: string[] = []\n let sqlRelationAgg: string[] = []\n\n sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, regionSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n // sqlRelation = [\n // buildSqlRelation(\"left\", \"brn\", \"countries\", \"cou\", [\"brn.country_id = cou.country_id\", \"cou.isdelete = false\", \"cou.istrash = false\"]),\n // buildSqlRelation(\"left\", \"brn\", \"states\", \"state\", [\"brn.state_id = state.state_id\", \"state.isdelete = false\", \"state.istrash = false\"]),\n // buildSqlRelation(\"left\", \"brn\", \"areas\", \"area\", [\"brn.area_id = area.area_id\", \"area.isdelete = false\", \"area.istrash = false\"]),\n // buildSqlRelation(\"left\", \"brn\", \"users\", \"creator\", [\"brn.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n // buildSqlRelation(\"left\", \"brn\", \"users\", \"updater\", [\"brn.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n // ]\n\n sqlRelation = [\n sqlRelationMaps.cou,\n sqlRelationMaps.state,\n sqlRelationMaps.area,\n sqlRelationMaps.creator,\n sqlRelationMaps.updater\n ]\n\n // sqlRelationAgg = [\n // buildSqlRelation(\"left\", \"brn\", \"document_items\", \"docitm\", [\"brn.document_id = docitm.document_id\", \"docitm.isdelete = false\", \"docitm.istrash = false\"]),\n // ]\n\n sqlGroupBy = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(regionSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...regionSqlSelect,\n ...defaultSqlSelect\n }\n\n // if (datatypes.includes(salesOrderDataTypes.salesOrderInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"document\", documentTypeKey.toLowerCase() as any)\n\n // const salesOrderInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"dif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...salesOrderInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, salesOrderInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"brn\", \"document_injection_fields\", \"dif\", [\"brn.document_id = dif.document_id\", \"dif.field_ref = 'document'\", `dif.field_module = '${documentTypeKey.toLowerCase()}'`, \"dif.isdelete = false\", \"dif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(salesOrderInjectionFieldSqlSelect)]\n // }\n\n // let itemSqlSelectAgg = buildDocumentItemSqlSelectAgg()\n\n // if (datatypes.includes(salesOrderDataTypes.salesOrderItemInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"document_item\", documentTypeKey.toLowerCase() as any)\n\n // const salesOrderItemInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"difi\", activeInjectionFields)\n\n // if (Object.entries(salesOrderItemInjectionFieldSqlSelect).length > 0) {\n // Object.entries(salesOrderItemInjectionFieldSqlSelect).map(([col, alias]) => {\n // itemSqlSelectAgg.push(`'${alias}', ${col}`)\n // })\n // }\n\n // sqlRelationAgg = [...sqlRelationAgg, buildSqlRelation(\"left\", \"docitm\", \"document_injection_fields\", \"difi\", [\"docitm.document_item_id = difi.document_item_id\", \"difi.field_ref = 'document_item'\", `difi.field_module = '${documentTypeKey.toLowerCase()}'`, \"difi.isdelete = false\", \"difi.istrash = false\"])]\n\n // }\n\n // let itemSqlSelect = buildDocumentItemSqlSelect(itemSqlSelectAgg)\n\n // sqlSelectAgg = [...sqlSelectAgg, ...[buildSqlSelect(``, itemSqlSelect)]]\n\n let sqlWhere = [\n `brn.isdelete = false`,\n `brn.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the data (pagination)\n // const sqlRaw = buildSqlRawSelect({\n // tableName: \"branches\",\n // mainAlias: \"brn\",\n // accountId: rest.accountId,\n // sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n // sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n // sqlWhere,\n // sqlGroupBy,\n // sqlOrderby,\n // sqlLimitOffset\n // })\n\n // let data = await userBranchModel.raw(sqlRaw)\n\n // // get the count\n // const sqlRawCount = buildSqlRawSelectCount({\n // tableName: \"branches\",\n // mainAlias: \"brn\",\n // accountId: rest.accountId,\n // sqlSelect,\n // sqlRelation,\n // sqlWhere,\n // sqlGroupBy,\n // sqlOrderby\n // })\n\n // let count = await userBranchModel.raw(sqlRawCount)\n\n // const response = {\n // data,\n // total: data.length ? Number(count[0].filtered_count) : 0\n // }\n\n // get the listing data & count\n const { data, total } = await getListWithCount({\n model: userBranchModel,\n tableName: \"branches\",\n mainAlias: \"brn\",\n countKey: `${ModelUserBranchFields.branch_id}`,\n accountId: rest.accountId,\n sqlRelationMaps,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg,\n sqlRelation,\n sqlRelationAgg,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n const response = {\n data,\n total\n }\n\n return response\n\n };\n\n // const removeUserBranches = async ({ userBranchIds }: UserBranchRemoveProps): Promise<User[] | null> => {\n\n // if (!userBranchIds.length) throwError('id is required');\n\n // const response = await userModel.trash({ userBranchIds, updateUserId: actionUserId });\n\n // return response\n // };\n\n const getUserBranchDataTypes = () => {\n\n let data: any[] = [];\n let total = 0;\n\n if (userBranchType === \"branch\") {\n // data = customerService.getDataTypes()\n }\n\n // const data = await userModel.list(payload);\n\n // if (!data?.file_id) {\n // throw new Error(`Invalid id: ${id}`);\n // }\n\n return data\n };\n\n return {\n // uploadFileByBuffer,\n getUserBranch,\n getUserBranchByUserId,\n listUserBranches,\n // removeUsers,\n getUserBranchDataTypes\n }\n\n}\n\n"]}
|
|
@@ -10,6 +10,7 @@ exports.documentProfileTypes = {
|
|
|
10
10
|
shipping: "shipping",
|
|
11
11
|
billing: "billing"
|
|
12
12
|
};
|
|
13
|
+
const { relationKeys, sqlRelationMaps } = (0, lib_1.getDocumentProfileRelationMaps)();
|
|
13
14
|
const getCreatePayload = (documentId, documentType, data) => {
|
|
14
15
|
return {
|
|
15
16
|
[`${models_1.ModelDocumentProfileFields.document_id}`]: documentId,
|
|
@@ -268,9 +269,13 @@ const DocumentProfileService = (props) => {
|
|
|
268
269
|
(0, lib_1.buildSqlSelect)(``, mainSqlSelect),
|
|
269
270
|
(0, lib_1.buildSqlSelect)(``, defaultSqlSelect)
|
|
270
271
|
];
|
|
272
|
+
// sqlRelation = [
|
|
273
|
+
// buildSqlRelation("left", "docpro", "users", "creator", ["docpro.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
274
|
+
// buildSqlRelation("left", "docpro", "users", "updater", ["docpro.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"])
|
|
275
|
+
// ]
|
|
271
276
|
sqlRelation = [
|
|
272
|
-
|
|
273
|
-
|
|
277
|
+
sqlRelationMaps.creator,
|
|
278
|
+
sqlRelationMaps.updater
|
|
274
279
|
];
|
|
275
280
|
// sqlRelationAgg = [
|
|
276
281
|
// buildSqlRelation("left", "docpro", "document_items", "docitm", ["docpro.document_id = docitm.document_id", "docitm.isdelete = false", "docitm.istrash = false"]),
|
|
@@ -291,34 +296,57 @@ const DocumentProfileService = (props) => {
|
|
|
291
296
|
let sqlOrderby = (0, lib_1.buildSqlOrderBy)(sortfield, sortorder);
|
|
292
297
|
let sqlLimitOffset = (0, lib_1.buildSqlLimitOffset)(limit, offset);
|
|
293
298
|
// get the data (pagination)
|
|
294
|
-
const sqlRaw =
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
})
|
|
305
|
-
let data = await documentModel.raw(sqlRaw)
|
|
306
|
-
// get the count
|
|
307
|
-
const sqlRawCount =
|
|
299
|
+
// const sqlRaw = buildSqlRawSelect({
|
|
300
|
+
// tableName: "document_profiles",
|
|
301
|
+
// mainAlias: "docpro",
|
|
302
|
+
// accountId: rest.accountId,
|
|
303
|
+
// sqlSelect: [...sqlSelect, ...sqlSelectAgg],
|
|
304
|
+
// sqlRelation: [...sqlRelation, ...sqlRelationAgg],
|
|
305
|
+
// sqlWhere,
|
|
306
|
+
// sqlGroupBy,
|
|
307
|
+
// sqlOrderby,
|
|
308
|
+
// sqlLimitOffset
|
|
309
|
+
// })
|
|
310
|
+
// let data = await documentModel.raw(sqlRaw)
|
|
311
|
+
// // get the count
|
|
312
|
+
// const sqlRawCount = buildSqlRawSelectCount({
|
|
313
|
+
// tableName: "document_profiles",
|
|
314
|
+
// mainAlias: "docpro",
|
|
315
|
+
// accountId: rest.accountId,
|
|
316
|
+
// sqlSelect,
|
|
317
|
+
// sqlRelation,
|
|
318
|
+
// sqlWhere,
|
|
319
|
+
// sqlGroupBy,
|
|
320
|
+
// sqlOrderby
|
|
321
|
+
// })
|
|
322
|
+
// let count = await documentModel.raw(sqlRawCount)
|
|
323
|
+
// get the listing data & count
|
|
324
|
+
const { data, total } = await (0, lib_1.getListWithCount)({
|
|
325
|
+
model: documentModel,
|
|
308
326
|
tableName: "document_profiles",
|
|
309
327
|
mainAlias: "docpro",
|
|
328
|
+
countKey: `${models_1.ModelDocumentProfileFields.document_profile_id}`,
|
|
310
329
|
accountId: rest.accountId,
|
|
330
|
+
sqlRelationMaps,
|
|
331
|
+
filters,
|
|
332
|
+
filterColumns,
|
|
311
333
|
sqlSelect,
|
|
334
|
+
sqlSelectAgg,
|
|
312
335
|
sqlRelation,
|
|
336
|
+
sqlRelationAgg,
|
|
313
337
|
sqlWhere,
|
|
314
338
|
sqlGroupBy,
|
|
315
|
-
sqlOrderby
|
|
339
|
+
sqlOrderby,
|
|
340
|
+
sqlLimitOffset
|
|
316
341
|
});
|
|
317
|
-
let count = await documentModel.raw(sqlRawCount);
|
|
318
342
|
const response = {
|
|
319
343
|
data,
|
|
320
|
-
total
|
|
344
|
+
total
|
|
321
345
|
};
|
|
346
|
+
// const response = {
|
|
347
|
+
// data,
|
|
348
|
+
// total: data.length ? Number(count[0].filtered_count) : 0
|
|
349
|
+
// }
|
|
322
350
|
return response;
|
|
323
351
|
};
|
|
324
352
|
const removeDocumentProfiles = async ({ documentIds }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentProfileService.js","sourceRoot":"","sources":["../../../src/services/document/DocumentProfileService.ts"],"names":[],"mappings":";;;AAAA,qCAKkB;AAElB,mCAAiE;AAEjE,yCAA8C;AAM9C,+BAAwL;AAE3K,QAAA,oBAAoB,GAAG;IAChC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACZ,CAAA;AAsEV,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,YAA0B,EAAE,IAAwC,EAAE,EAAE;IAElH,OAAO;QACH,CAAC,GAAG,mCAA0B,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU;QACzD,CAAC,GAAG,mCAA0B,CAAC,aAAa,EAAE,CAAC,EAAE,YAAY;QAC7D,CAAC,GAAG,mCAA0B,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY;QACnE,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;QACtD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI;QACjD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QACtE,CAAC,GAAG,mCAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW;QAChE,CAAC,GAAG,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC1D,CAAC,GAAG,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC1D,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS;QACzD,CAAC,GAAG,mCAA0B,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK;QACnD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU;QACvD,CAAC,GAAG,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QACzD,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;QACtD,CAAC,GAAG,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO;QACxD,CAAC,GAAG,mCAA0B,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS;KAC/D,CAAA;AAEL,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,YAA0B,EAAE,IAAwC,EAAE,EAAE;IAE9F,OAAO;QACH,6DAA6D;QAC7D,iEAAiE;QACjE,CAAC,GAAG,mCAA0B,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY;QACnE,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;QACtD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI;QACjD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QACtE,CAAC,GAAG,mCAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW;QAChE,CAAC,GAAG,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC1D,CAAC,GAAG,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC1D,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS;QACzD,CAAC,GAAG,mCAA0B,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK;QACnD,CAAC,GAAG,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU;QACvD,CAAC,GAAG,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QACzD,CAAC,GAAG,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;QACtD,CAAC,GAAG,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO;QACxD,CAAC,GAAG,mCAA0B,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS;KAC/D,CAAA;AAEL,CAAC,CAAA;AAED,IAAI,aAAa,GAAG;IAChB,CAAC,UAAU,mCAA0B,CAAC,mBAAmB,EAAE,CAAC,EAAE,qBAAqB;IACnF,CAAC,UAAU,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM;IACrD,CAAC,UAAU,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM;IACrD,CAAC,UAAU,mCAA0B,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM;IACrD,CAAC,UAAU,mCAA0B,CAAC,WAAW,EAAE,CAAC,EAAE,aAAa;IACnE,CAAC,UAAU,mCAA0B,CAAC,aAAa,EAAE,CAAC,EAAE,eAAe;IACvE,CAAC,UAAU,mCAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,cAAc;IACrE,CAAC,UAAU,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW;IAC/D,CAAC,UAAU,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW;IAC/D,CAAC,UAAU,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS;IAC3D,CAAC,UAAU,mCAA0B,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO;IACvD,CAAC,UAAU,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU;IAC7D,yDAAyD;IACzD,CAAC,UAAU,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS;IAC3D,8DAA8D;IAC9D,0EAA0E;IAC1E,CAAC,UAAU,mCAA0B,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY;IACjE,kEAAkE;IAClE,CAAC,UAAU,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU;IAC7D,CAAC,UAAU,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS;IAC3D,CAAC,UAAU,mCAA0B,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;CAC5E,CAAA;AACD,IAAI,gBAAgB,GAAG;IACnB,CAAC,UAAU,mCAA0B,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IACzE,CAAC,WAAW,wBAAe,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IAC/D,CAAC,UAAU,mCAA0B,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IACzE,CAAC,WAAW,wBAAe,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IAC/D,CAAC,UAAU,mCAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU;IAC7D,CAAC,UAAU,mCAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS;IAC3D,CAAC,UAAU,mCAA0B,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW;CAClE,CAAA;AAEM,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAE,EAAE;IAEzE,MAAM,EACF,YAAY,GAAG,OAAO,EACtB,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,oBAAoB,GAAG,IAAA,6BAAoB,EAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,aAAa,GAAG,IAAA,sBAAa,EAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAEhD,MAAM,iBAAiB,GAAG,IAAA,4BAAiB,EAAC,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAA;IAElH,8CAA8C;IAC9C,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAiC,EAAE,EAAE;QAE/H,MAAM,aAAa,GAAG,oBAAoB,IAAI,YAAY,CAAA;QAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,qCAAqC;QAErC,IAAI,eAAe,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAE5G,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAA,kBAAU,EAAC,8BAA8B,MAAM,EAAE,CAAC,CAAA;QACtD,CAAC;QAED,IAAI,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAEvC,gDAAgD;QAEhD,yDAAyD;QACzD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;QAElH,IAAI,QAAQ,GAAQ,EAAE,CAAA;QAEtB,IAAI,YAAY,EAAE,CAAC;YAEf,IAAI,OAAO,GAA+B;gBACtC,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;gBAC5D,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE;oBACF,WAAW,EAAE,SAAS;oBACtB,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;oBAC9C,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBACtC,IAAI,EAAE,cAAc,CAAC,WAAW,IAAI,EAAE;oBACtC,SAAS,EAAE,cAAc,CAAC,cAAc,IAAI,EAAE;oBAC9C,KAAK,EAAE,cAAc,CAAC,YAAY,IAAI,EAAE;oBACxC,UAAU,EAAE,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,EAAE;oBAC/C,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,EAAE;oBACvC,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,EAAE;oBAC7C,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACxC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBACtC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC5C,QAAQ,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;oBACxC,QAAQ,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;iBAC3C;aACJ,CAAA;YAED,sCAAsC;YACtC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAA;QAEnD,CAAC;aAAM,CAAC,CAAC,aAAa;YAClB,IAAI,OAAO,GAA+B;gBACtC,UAAU;gBACV,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE;oBACF,WAAW,EAAE,SAAS;oBACtB,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;oBAC9C,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBACtC,IAAI,EAAE,cAAc,CAAC,WAAW,IAAI,EAAE;oBACtC,SAAS,EAAE,cAAc,CAAC,cAAc,IAAI,EAAE;oBAC9C,KAAK,EAAE,cAAc,CAAC,YAAY,IAAI,EAAE;oBACxC,UAAU,EAAE,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,EAAE;oBAC/C,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,EAAE;oBACvC,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,EAAE;oBAC7C,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACxC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBACtC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;oBAC5C,QAAQ,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;oBACxC,QAAQ,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;iBAC3C;aACJ,CAAA;YAED,sCAAsC;YACtC,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAA;QAEnD,CAAC;QAED,OAAO,QAAQ,CAAA;IAEnB,CAAC,CAAA;IAED,8CAA8C;IAC9C,MAAM,2BAA2B,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,GAAG,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAoC,EAAE,EAAE;QAEvK,MAAM,aAAa,GAAG,oBAAoB,IAAI,YAAY,CAAA;QAE1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACtC,iCAAiC;QACjC,qCAAqC;QAErC,IAAI,UAAU,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAEvF,wCAAwC;QAExC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACvB,IAAA,kBAAU,EAAC,mCAAmC,YAAY,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,uEAAuE;QACvE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAA;QAE5H,IAAI,QAAQ,GAAQ,EAAE,CAAA;QAEtB,IAAI,YAAY,EAAE,CAAC;YAEf,IAAI,OAAO,GAA+B;gBACtC,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;gBAC5D,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE;oBACF,WAAW,EAAE,mBAAmB;oBAChC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;oBAC1C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;oBAElC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;oBACnE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,IAAI,EAAE,CAAC;oBAC3E,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;oBACvE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACxF,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC5E,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;oBACxF,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;oBACvE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;oBACnF,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;oBAC7E,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;iBAChF;aACJ,CAAA;YAED,oDAAoD;YACpD,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAA;QAEnD,CAAC;aAAM,CAAC;YAEJ,IAAI,OAAO,GAA+B;gBACtC,UAAU;gBACV,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE;oBACF,WAAW,EAAE,mBAAmB;oBAChC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;oBAC1C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;oBAElC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;oBACnE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,IAAI,EAAE,CAAC;oBAC3E,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;oBACvE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACxF,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC5E,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;oBACxF,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;oBACvE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;oBACnF,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;oBAC7E,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;iBAChF;aACJ,CAAA;YAED,oDAAoD;YACpD,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,QAAQ,CAAA;IAEnB,CAAC,CAAA;IAED,UAAU;IACV,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAA8B,EAAE,EAAE;QAEzH,MAAM,aAAa,GAAG,oBAAoB,IAAI,YAAY,CAAA;QAE1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;QAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,0BAA0B;QAC1B,OAAO,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAE7D,CAAC,CAAA;IAED,UAAU;IACV,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAA8B,EAAE,EAAE;QAEhI,MAAM,aAAa,GAAG,oBAAoB,IAAI,YAAY,CAAA;QAE1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QAEnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,0BAA0B;QAC1B,OAAO,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAEpF,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAA2B,EAAE,EAAE;QAEnH,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,mCAA0B,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;QAC9G,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,mCAA0B,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAClH,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,mCAA0B,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAClH,CAAC;QAED,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,oBAAoB,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,OAA+B;YACxC,SAAS,EAAE,GAAG,mCAA0B,CAAC,WAAW,EAAE;YACtD,SAAS,EAAE,KAAK;YAChB,gBAAgB;SACnB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE3B,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAChC,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAS;IACT,iBAAiB;MACM,EAAE,EAAE;QAE3B,IAAI,SAAS,GAAa,EAAE,CAAA;QAC5B,IAAI,WAAW,GAAa,EAAE,CAAA;QAC9B,IAAI,UAAU,GAAa,EAAE,CAAA;QAE7B,IAAI,YAAY,GAAa,EAAE,CAAA;QAC/B,IAAI,cAAc,GAAa,EAAE,CAAA;QAEjC,SAAS,GAAG;YACR,IAAA,oBAAc,EAAC,EAAE,EAAE,aAAa,CAAC;YACjC,IAAA,oBAAc,EAAC,EAAE,EAAE,gBAAgB,CAAC;SACvC,CAAA;QAED,WAAW,GAAG;YACV,IAAA,sBAAgB,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,uCAAuC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;YACxJ,IAAA,sBAAgB,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,uCAAuC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;SAC3J,CAAA;QAED,qBAAqB;QACrB,wKAAwK;QACxK,IAAI;QAEJ,UAAU,GAAG;YACT,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7B,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACnC,CAAA;QAED,IAAI,aAAa,GAAG;YAChB,GAAG,aAAa;YAChB,GAAG,gBAAgB;SACtB,CAAA;QAED,IAAI,QAAQ,GAAG;YACX,yBAAyB;YACzB,wBAAwB;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAa,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAA;QAED,IAAI,UAAU,GAAG,IAAA,qBAAe,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACtD,IAAI,cAAc,GAAG,IAAA,yBAAmB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,uBAAiB,EAAC;YAC7B,SAAS,EAAE,mBAAmB;YAC9B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC;YAC1C,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC;YAChD,QAAQ;YACR,UAAU;YACV,UAAU;YACV,cAAc;SACjB,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE1C,gBAAgB;QAChB,MAAM,WAAW,GAAG,IAAA,4BAAsB,EAAC;YACvC,SAAS,EAAE,mBAAmB;YAC9B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS;YACT,WAAW;YACX,QAAQ;YACR,UAAU;YACV,UAAU;SACb,CAAC,CAAA;QAEF,IAAI,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEhD,MAAM,QAAQ,GAAG;YACb,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAA;QAED,OAAO,QAAQ,CAAA;IAEnB,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAAE,WAAW,EAA8B,EAAE,EAAE;QAEjF,IAAI,CAAC,WAAW,CAAC,MAAM;YAAE,IAAA,kBAAU,EAAC,yBAAyB,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,mCAA0B,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAEtI,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAC;IAEF,OAAO;QACH,wBAAwB;QACxB,2BAA2B;QAC3B,sBAAsB;QACtB,4DAA4D;QAC5D,4DAA4D;KAC/D,CAAA;AAEL,CAAC,CAAA;AAhVY,QAAA,sBAAsB,0BAgVlC","sourcesContent":["import {\n DocumentModel,\n DocumentProfileModel,\n ModelDocumentProfileFields,\n ModelUserFields\n} from \"@/models\";\n\nimport { dayjs, DefaultServiceProps, throwError } from \"@/utils\";\n\nimport { UserBranchService } from \"@/services\"\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DocumentType } from \"./DocumentService\"\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlRawSelectCount, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport const documentProfileTypes = {\n profile: \"profile\",\n shipping: \"shipping\",\n billing: \"billing\"\n} as const\n\nexport type DocumentProfileType = typeof documentProfileTypes[keyof typeof documentProfileTypes]\n\nexport type DocumentProfileServiceProps = DefaultServiceProps & {\n documentType: DocumentType\n};\n\nexport type DocumentProfile = {\n userId: number,\n userBranchId: number,\n // documentId: number,\n profileType: DocumentProfileType,\n code?: string,\n profileName?: string,\n personName?: string,\n contactNo?: string,\n email?: string,\n address1?: string,\n address2?: string,\n postcode?: string,\n stateId?: number,\n areaId?: number,\n countryId?: number\n}\n\nexport type DocumentProfileGetProps = Omit<QueryGet, \"datatypes\"> & {\n documentId?: number | \"\",\n documentType?: DocumentType | \"\",\n profileType?: DocumentProfileType | \"\"\n};\n\nexport type DocumentProfileListProps = Omit<QueryList, \"datatypes\"> & {\n // profileType: DocumentProfileType\n};\n\nexport type DocumentProfileCreateProps = {\n documentId: number,\n documentType?: DocumentType,\n data: DocumentProfile\n}\n\nexport type DocumentProfileUpdateProps = {\n // documentId: number,\n documentProfileId: number,\n documentType?: DocumentType,\n data: DocumentProfile\n}\n\nexport type DocumentProfileReplaceHQProps = {\n documentId: number,\n documentType?: DocumentType,\n data: Pick<DocumentProfile, \"userId\"> & {\n // userType: \"customer\" | \"supplier\"\n }\n}\n\nexport type DocumentProfileReplaceOtherProps = {\n documentId: number,\n documentType?: DocumentType,\n documentProfileType: DocumentProfileType,\n data: Omit<DocumentProfile, \"userId\" | \"profileType\"> & {\n // userType: \"customer\" | \"supplier\"\n }\n}\n\nexport type DocumentProfileRemoveProps = {\n documentIds: BigInt[]\n};\n\nconst getCreatePayload = (documentId: number, documentType: DocumentType, data: DocumentProfileCreateProps[\"data\"]) => {\n\n return {\n [`${ModelDocumentProfileFields.document_id}`]: documentId,\n [`${ModelDocumentProfileFields.document_type}`]: documentType,\n [`${ModelDocumentProfileFields.user_branch_id}`]: data.userBranchId,\n [`${ModelDocumentProfileFields.user_id}`]: data.userId,\n [`${ModelDocumentProfileFields.code}`]: data.code,\n [`${ModelDocumentProfileFields.type}`]: data.profileType.toUpperCase(),\n [`${ModelDocumentProfileFields.profile_name}`]: data.profileName,\n [`${ModelDocumentProfileFields.address_1}`]: data.address1,\n [`${ModelDocumentProfileFields.address_2}`]: data.address2,\n [`${ModelDocumentProfileFields.contact}`]: data.contactNo,\n [`${ModelDocumentProfileFields.email}`]: data.email,\n [`${ModelDocumentProfileFields.name}`]: data.personName,\n [`${ModelDocumentProfileFields.postcode}`]: data.postcode,\n [`${ModelDocumentProfileFields.area_id}`]: data.areaId,\n [`${ModelDocumentProfileFields.state_id}`]: data.stateId,\n [`${ModelDocumentProfileFields.country_id}`]: data.countryId,\n }\n\n}\n\nconst getUpdatePayload = (documentType: DocumentType, data: DocumentProfileUpdateProps[\"data\"]) => {\n\n return {\n // [`${ModelDocumentProfileFields.document_id}`]: documentId,\n // [`${ModelDocumentProfileFields.document_type}`]: documentType,\n [`${ModelDocumentProfileFields.user_branch_id}`]: data.userBranchId,\n [`${ModelDocumentProfileFields.user_id}`]: data.userId,\n [`${ModelDocumentProfileFields.code}`]: data.code,\n [`${ModelDocumentProfileFields.type}`]: data.profileType.toUpperCase(),\n [`${ModelDocumentProfileFields.profile_name}`]: data.profileName,\n [`${ModelDocumentProfileFields.address_1}`]: data.address1,\n [`${ModelDocumentProfileFields.address_2}`]: data.address2,\n [`${ModelDocumentProfileFields.contact}`]: data.contactNo,\n [`${ModelDocumentProfileFields.email}`]: data.email,\n [`${ModelDocumentProfileFields.name}`]: data.personName,\n [`${ModelDocumentProfileFields.postcode}`]: data.postcode,\n [`${ModelDocumentProfileFields.area_id}`]: data.areaId,\n [`${ModelDocumentProfileFields.state_id}`]: data.stateId,\n [`${ModelDocumentProfileFields.country_id}`]: data.countryId,\n }\n\n}\n\nlet mainSqlSelect = {\n [`docpro.${ModelDocumentProfileFields.document_profile_id}`]: `document_profile_id`,\n [`docpro.${ModelDocumentProfileFields.code}`]: `code`,\n [`docpro.${ModelDocumentProfileFields.name}`]: `name`,\n [`docpro.${ModelDocumentProfileFields.type}`]: `type`,\n [`docpro.${ModelDocumentProfileFields.document_id}`]: `document_id`,\n [`docpro.${ModelDocumentProfileFields.document_type}`]: `document_type`,\n [`docpro.${ModelDocumentProfileFields.profile_name}`]: `profile_name`,\n [`docpro.${ModelDocumentProfileFields.address_1}`]: `address_1`,\n [`docpro.${ModelDocumentProfileFields.address_2}`]: `address_2`,\n [`docpro.${ModelDocumentProfileFields.contact}`]: `contact`,\n [`docpro.${ModelDocumentProfileFields.email}`]: `email`,\n [`docpro.${ModelDocumentProfileFields.postcode}`]: `postcode`,\n // [`docpro.${ModelDocumentProfileFields.area}`]: `area`,\n [`docpro.${ModelDocumentProfileFields.area_id}`]: `area_id`,\n // [`${aliasArea}.${ModelAreaFields.area_name}`]: `area_name`,\n // [`${aliasCountry}.${ModelCountryFields.country_name}`]: `country_name`,\n [`docpro.${ModelDocumentProfileFields.country_id}`]: `country_id`,\n // [`${aliasState}.${ModelStateFields.state_name}`]: `state_name`,\n [`docpro.${ModelDocumentProfileFields.state_id}`]: `state_id`,\n [`docpro.${ModelDocumentProfileFields.user_id}`]: `user_id`,\n [`docpro.${ModelDocumentProfileFields.user_branch_id}`]: `user_branch_id`\n}\nlet defaultSqlSelect = {\n [`docpro.${ModelDocumentProfileFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`docpro.${ModelDocumentProfileFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`docpro.${ModelDocumentProfileFields.isdelete}`]: \"isdelete\",\n [`docpro.${ModelDocumentProfileFields.istrash}`]: \"istrash\",\n [`docpro.${ModelDocumentProfileFields.accountid}`]: \"accountid\",\n}\n\nexport const DocumentProfileService = (props: DocumentProfileServiceProps) => {\n\n const {\n documentType = \"sales\",\n ...rest\n } = props\n\n const documentProfileModel = DocumentProfileModel({ ...rest })\n const documentModel = DocumentModel({ ...rest })\n\n const userBranchService = UserBranchService({ ...rest, userBranchUserType: \"customer\", userBranchType: \"branch\" })\n\n // override existing - if not found create new\n const replaceDocumentProfileHQ = async ({ data, documentId, documentType: overrideDocumentType }: DocumentProfileReplaceHQProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const userId = data.userId\n // const documentId = data.documentId\n\n let _userHQBranches = await userBranchService.getUserBranchByUserId({ userId, onlyHQ: true, datatypes: [] })\n\n if (_userHQBranches.length <= 0) {\n throwError(`Unset main branch user id: ${userId}`)\n }\n\n let userHQBranches = _userHQBranches[0]\n\n // console.log('userHQBranches', userHQBranches)\n\n // check the profile HQ already exists - for type profile\n const existProfile = await getDocumentProfile({ documentId, documentType: _documentType, profileType: \"profile\" })\n\n let response: any = {}\n\n if (existProfile) {\n\n let payload: DocumentProfileUpdateProps = {\n documentProfileId: Number(existProfile?.document_profile_id),\n documentType: _documentType,\n data: {\n profileType: \"profile\",\n userBranchId: Number(userHQBranches.branch_id),\n userId: Number(userHQBranches.user_id),\n code: userHQBranches.branch_code ?? \"\",\n contactNo: userHQBranches.branch_contact ?? \"\",\n email: userHQBranches.branch_email ?? \"\",\n personName: `${userHQBranches?.pic_name ?? \"\"}`,\n postcode: userHQBranches.postcode ?? \"\",\n profileName: userHQBranches.branch_name ?? \"\",\n stateId: Number(userHQBranches.state_id),\n areaId: Number(userHQBranches.area_id),\n countryId: Number(userHQBranches.country_id),\n address1: userHQBranches.address_1 ?? \"\",\n address2: userHQBranches.address_2 ?? \"\",\n }\n }\n\n // update document profile for profile\n response = await updateDocumentProfile(payload)\n\n } else { // create new\n let payload: DocumentProfileCreateProps = {\n documentId,\n documentType: _documentType,\n data: {\n profileType: \"profile\",\n userBranchId: Number(userHQBranches.branch_id),\n userId: Number(userHQBranches.user_id),\n code: userHQBranches.branch_code ?? \"\",\n contactNo: userHQBranches.branch_contact ?? \"\",\n email: userHQBranches.branch_email ?? \"\",\n personName: `${userHQBranches?.pic_name ?? \"\"}`,\n postcode: userHQBranches.postcode ?? \"\",\n profileName: userHQBranches.branch_name ?? \"\",\n stateId: Number(userHQBranches.state_id),\n areaId: Number(userHQBranches.area_id),\n countryId: Number(userHQBranches.country_id),\n address1: userHQBranches.address_1 ?? \"\",\n address2: userHQBranches.address_2 ?? \"\",\n }\n }\n\n // create document profile for profile\n response = await createDocumentProfile(payload)\n\n }\n\n return response\n\n }\n\n // override existing - if not found create new\n const replaceDocumentProfileOther = async ({ data, documentId, documentProfileType = \"shipping\", documentType: overrideDocumentType }: DocumentProfileReplaceOtherProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const userBranchId = data.userBranchId\n // const userType = data.userType\n // const documentId = data.documentId\n\n let userBranch = await userBranchService.getUserBranch({ userBranchId, datatypes: [] })\n\n // console.log('userBranch', userBranch)\n\n if (!userBranch?.user_id) {\n throwError(`Invalid user id in user branch: ${userBranchId}`)\n }\n\n // check the profile other already exists - for other type than profile\n const existProfile = await getDocumentProfile({ documentId, documentType: _documentType, profileType: documentProfileType })\n\n let response: any = {}\n\n if (existProfile) {\n\n let payload: DocumentProfileUpdateProps = {\n documentProfileId: Number(existProfile?.document_profile_id),\n documentType: _documentType,\n data: {\n profileType: documentProfileType,\n userBranchId: Number(userBranch.branch_id),\n userId: Number(userBranch.user_id),\n\n code: data?.code ? data.code : String(userBranch.branch_code ?? \"\"),\n contactNo: data?.code ? data.code : String(userBranch.branch_contact ?? \"\"),\n email: data?.email ? data.email : String(userBranch.branch_email ?? \"\"),\n personName: data?.personName ? data.personName : String(`${userBranch?.pic_name ?? \"\"}`),\n postcode: data?.postcode ? data.postcode : String(userBranch.postcode ?? \"\"),\n profileName: data?.profileName ? data.profileName : String(userBranch.branch_name ?? \"\"),\n stateId: data?.stateId ? Number(data.stateId) : Number(userBranch.state_id),\n areaId: data?.areaId ? Number(data.areaId) : Number(userBranch.area_id),\n countryId: data?.countryId ? Number(data.countryId) : Number(userBranch.country_id),\n address1: data?.address1 ? data.address1 : String(userBranch.address_1 ?? \"\"),\n address2: data?.address2 ? data.address2 : String(userBranch.address_2 ?? \"\"),\n }\n }\n\n // update document profile for (shipping or billing)\n response = await updateDocumentProfile(payload)\n\n } else {\n\n let payload: DocumentProfileCreateProps = {\n documentId,\n documentType: _documentType,\n data: {\n profileType: documentProfileType,\n userBranchId: Number(userBranch.branch_id),\n userId: Number(userBranch.user_id),\n\n code: data?.code ? data.code : String(userBranch.branch_code ?? \"\"),\n contactNo: data?.code ? data.code : String(userBranch.branch_contact ?? \"\"),\n email: data?.email ? data.email : String(userBranch.branch_email ?? \"\"),\n personName: data?.personName ? data.personName : String(`${userBranch?.pic_name ?? \"\"}`),\n postcode: data?.postcode ? data.postcode : String(userBranch.postcode ?? \"\"),\n profileName: data?.profileName ? data.profileName : String(userBranch.branch_name ?? \"\"),\n stateId: data?.stateId ? Number(data.stateId) : Number(userBranch.state_id),\n areaId: data?.areaId ? Number(data.areaId) : Number(userBranch.area_id),\n countryId: data?.countryId ? Number(data.countryId) : Number(userBranch.country_id),\n address1: data?.address1 ? data.address1 : String(userBranch.address_1 ?? \"\"),\n address2: data?.address2 ? data.address2 : String(userBranch.address_2 ?? \"\"),\n }\n }\n\n // create document profile for (shipping or billing)\n response = await createDocumentProfile(payload)\n }\n\n return response\n\n }\n\n // private\n const createDocumentProfile = async ({ data, documentId, documentType: overrideDocumentType }: DocumentProfileCreateProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const _data = getCreatePayload(documentId, _documentType, data)\n\n if (!_data) {\n throw new Error(`Invalid create document(profile) payload: ${JSON.stringify(_data)}`);\n }\n\n // create document profile\n return await documentProfileModel.create({ data: _data })\n\n }\n\n // private\n const updateDocumentProfile = async ({ documentProfileId, data, documentType: overrideDocumentType }: DocumentProfileUpdateProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const _data = getUpdatePayload(_documentType, data)\n\n if (!_data) {\n throw new Error(`Invalid update document(profile) payload: ${JSON.stringify(_data)}`);\n }\n\n // update document profile\n return await documentProfileModel.update({ id: documentProfileId, data: _data })\n\n }\n\n const getDocumentProfile = async ({ documentId = \"\", documentType = \"\", profileType = \"\" }: DocumentProfileGetProps) => {\n\n let filters = []\n\n if (documentType) {\n filters.push({ field: `${ModelDocumentProfileFields.document_type}`, operator: \"=\", value: documentType })\n }\n if (documentId) {\n filters.push({ field: `${ModelDocumentProfileFields.document_id}`, operator: \"=\", value: Number(documentId) })\n }\n if (profileType) {\n filters.push({ field: `${ModelDocumentProfileFields.type}`, operator: \"=\", value: profileType.toUpperCase() })\n }\n\n let { data } = await listDocumentProfiles({\n limit: 1,\n offset: 0,\n filters: filters as QueryList[\"filters\"],\n sortfield: `${ModelDocumentProfileFields.document_id}`,\n sortorder: \"ASC\",\n // datatypes: []\n })\n\n return data[0] ?? null;\n\n };\n\n const listDocumentProfiles = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n // datatypes = []\n }: DocumentProfileListProps) => {\n\n let sqlSelect: string[] = []\n let sqlRelation: string[] = []\n let sqlGroupBy: string[] = []\n\n let sqlSelectAgg: string[] = []\n let sqlRelationAgg: string[] = []\n\n sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n sqlRelation = [\n buildSqlRelation(\"left\", \"docpro\", \"users\", \"creator\", [\"docpro.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"docpro\", \"users\", \"updater\", [\"docpro.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n // sqlRelationAgg = [\n // buildSqlRelation(\"left\", \"docpro\", \"document_items\", \"docitm\", [\"docpro.document_id = docitm.document_id\", \"docitm.isdelete = false\", \"docitm.istrash = false\"]),\n // ]\n\n sqlGroupBy = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `docpro.isdelete = false`,\n `docpro.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the data (pagination)\n const sqlRaw = buildSqlRawSelect({\n tableName: \"document_profiles\",\n mainAlias: \"docpro\",\n accountId: rest.accountId,\n sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n let data = await documentModel.raw(sqlRaw)\n\n // get the count\n const sqlRawCount = buildSqlRawSelectCount({\n tableName: \"document_profiles\",\n mainAlias: \"docpro\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby\n })\n\n let count = await documentModel.raw(sqlRawCount)\n\n const response = {\n data,\n total: data.length ? Number(count[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeDocumentProfiles = async ({ documentIds }: DocumentProfileRemoveProps) => {\n\n if (!documentIds.length) throwError('documentIds is required');\n\n const response = await documentProfileModel.remove({ where: { [`${ModelDocumentProfileFields.document_id}`]: { in: documentIds } } });\n\n return response\n };\n\n return {\n replaceDocumentProfileHQ,\n replaceDocumentProfileOther,\n removeDocumentProfiles,\n // createDocumentProfile // no need export internal use only\n // updateDocumentProfile // no need export internal use only\n }\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"DocumentProfileService.js","sourceRoot":"","sources":["../../../src/services/document/DocumentProfileService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DocumentModel,\n DocumentProfileModel,\n ModelDocumentProfileFields,\n ModelUserFields\n} from \"@/models\";\n\nimport { dayjs, DefaultServiceProps, throwError } from \"@/utils\";\n\nimport { UserBranchService } from \"@/services\"\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DocumentType } from \"./DocumentService\"\n\nimport { buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect, getDocumentProfileRelationMaps, getListWithCount } from \"@/lib\";\n\nexport const documentProfileTypes = {\n profile: \"profile\",\n shipping: \"shipping\",\n billing: \"billing\"\n} as const\n\nexport type DocumentProfileType = typeof documentProfileTypes[keyof typeof documentProfileTypes]\n\nexport type DocumentProfileServiceProps = DefaultServiceProps & {\n documentType: DocumentType\n};\n\nexport type DocumentProfile = {\n userId: number,\n userBranchId: number,\n // documentId: number,\n profileType: DocumentProfileType,\n code?: string,\n profileName?: string,\n personName?: string,\n contactNo?: string,\n email?: string,\n address1?: string,\n address2?: string,\n postcode?: string,\n stateId?: number,\n areaId?: number,\n countryId?: number\n}\n\nexport type DocumentProfileGetProps = Omit<QueryGet, \"datatypes\"> & {\n documentId?: number | \"\",\n documentType?: DocumentType | \"\",\n profileType?: DocumentProfileType | \"\"\n};\n\nexport type DocumentProfileListProps = Omit<QueryList, \"datatypes\"> & {\n // profileType: DocumentProfileType\n};\n\nexport type DocumentProfileCreateProps = {\n documentId: number,\n documentType?: DocumentType,\n data: DocumentProfile\n}\n\nexport type DocumentProfileUpdateProps = {\n // documentId: number,\n documentProfileId: number,\n documentType?: DocumentType,\n data: DocumentProfile\n}\n\nexport type DocumentProfileReplaceHQProps = {\n documentId: number,\n documentType?: DocumentType,\n data: Pick<DocumentProfile, \"userId\"> & {\n // userType: \"customer\" | \"supplier\"\n }\n}\n\nexport type DocumentProfileReplaceOtherProps = {\n documentId: number,\n documentType?: DocumentType,\n documentProfileType: DocumentProfileType,\n data: Omit<DocumentProfile, \"userId\" | \"profileType\"> & {\n // userType: \"customer\" | \"supplier\"\n }\n}\n\nexport type DocumentProfileRemoveProps = {\n documentIds: BigInt[]\n};\n\nconst { relationKeys, sqlRelationMaps } = getDocumentProfileRelationMaps()\n\nconst getCreatePayload = (documentId: number, documentType: DocumentType, data: DocumentProfileCreateProps[\"data\"]) => {\n\n return {\n [`${ModelDocumentProfileFields.document_id}`]: documentId,\n [`${ModelDocumentProfileFields.document_type}`]: documentType,\n [`${ModelDocumentProfileFields.user_branch_id}`]: data.userBranchId,\n [`${ModelDocumentProfileFields.user_id}`]: data.userId,\n [`${ModelDocumentProfileFields.code}`]: data.code,\n [`${ModelDocumentProfileFields.type}`]: data.profileType.toUpperCase(),\n [`${ModelDocumentProfileFields.profile_name}`]: data.profileName,\n [`${ModelDocumentProfileFields.address_1}`]: data.address1,\n [`${ModelDocumentProfileFields.address_2}`]: data.address2,\n [`${ModelDocumentProfileFields.contact}`]: data.contactNo,\n [`${ModelDocumentProfileFields.email}`]: data.email,\n [`${ModelDocumentProfileFields.name}`]: data.personName,\n [`${ModelDocumentProfileFields.postcode}`]: data.postcode,\n [`${ModelDocumentProfileFields.area_id}`]: data.areaId,\n [`${ModelDocumentProfileFields.state_id}`]: data.stateId,\n [`${ModelDocumentProfileFields.country_id}`]: data.countryId,\n }\n\n}\n\nconst getUpdatePayload = (documentType: DocumentType, data: DocumentProfileUpdateProps[\"data\"]) => {\n\n return {\n // [`${ModelDocumentProfileFields.document_id}`]: documentId,\n // [`${ModelDocumentProfileFields.document_type}`]: documentType,\n [`${ModelDocumentProfileFields.user_branch_id}`]: data.userBranchId,\n [`${ModelDocumentProfileFields.user_id}`]: data.userId,\n [`${ModelDocumentProfileFields.code}`]: data.code,\n [`${ModelDocumentProfileFields.type}`]: data.profileType.toUpperCase(),\n [`${ModelDocumentProfileFields.profile_name}`]: data.profileName,\n [`${ModelDocumentProfileFields.address_1}`]: data.address1,\n [`${ModelDocumentProfileFields.address_2}`]: data.address2,\n [`${ModelDocumentProfileFields.contact}`]: data.contactNo,\n [`${ModelDocumentProfileFields.email}`]: data.email,\n [`${ModelDocumentProfileFields.name}`]: data.personName,\n [`${ModelDocumentProfileFields.postcode}`]: data.postcode,\n [`${ModelDocumentProfileFields.area_id}`]: data.areaId,\n [`${ModelDocumentProfileFields.state_id}`]: data.stateId,\n [`${ModelDocumentProfileFields.country_id}`]: data.countryId,\n }\n\n}\n\nlet mainSqlSelect = {\n [`docpro.${ModelDocumentProfileFields.document_profile_id}`]: `document_profile_id`,\n [`docpro.${ModelDocumentProfileFields.code}`]: `code`,\n [`docpro.${ModelDocumentProfileFields.name}`]: `name`,\n [`docpro.${ModelDocumentProfileFields.type}`]: `type`,\n [`docpro.${ModelDocumentProfileFields.document_id}`]: `document_id`,\n [`docpro.${ModelDocumentProfileFields.document_type}`]: `document_type`,\n [`docpro.${ModelDocumentProfileFields.profile_name}`]: `profile_name`,\n [`docpro.${ModelDocumentProfileFields.address_1}`]: `address_1`,\n [`docpro.${ModelDocumentProfileFields.address_2}`]: `address_2`,\n [`docpro.${ModelDocumentProfileFields.contact}`]: `contact`,\n [`docpro.${ModelDocumentProfileFields.email}`]: `email`,\n [`docpro.${ModelDocumentProfileFields.postcode}`]: `postcode`,\n // [`docpro.${ModelDocumentProfileFields.area}`]: `area`,\n [`docpro.${ModelDocumentProfileFields.area_id}`]: `area_id`,\n // [`${aliasArea}.${ModelAreaFields.area_name}`]: `area_name`,\n // [`${aliasCountry}.${ModelCountryFields.country_name}`]: `country_name`,\n [`docpro.${ModelDocumentProfileFields.country_id}`]: `country_id`,\n // [`${aliasState}.${ModelStateFields.state_name}`]: `state_name`,\n [`docpro.${ModelDocumentProfileFields.state_id}`]: `state_id`,\n [`docpro.${ModelDocumentProfileFields.user_id}`]: `user_id`,\n [`docpro.${ModelDocumentProfileFields.user_branch_id}`]: `user_branch_id`\n}\nlet defaultSqlSelect = {\n [`docpro.${ModelDocumentProfileFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`docpro.${ModelDocumentProfileFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`docpro.${ModelDocumentProfileFields.isdelete}`]: \"isdelete\",\n [`docpro.${ModelDocumentProfileFields.istrash}`]: \"istrash\",\n [`docpro.${ModelDocumentProfileFields.accountid}`]: \"accountid\",\n}\n\nexport const DocumentProfileService = (props: DocumentProfileServiceProps) => {\n\n const {\n documentType = \"sales\",\n ...rest\n } = props\n\n const documentProfileModel = DocumentProfileModel({ ...rest })\n const documentModel = DocumentModel({ ...rest })\n\n const userBranchService = UserBranchService({ ...rest, userBranchUserType: \"customer\", userBranchType: \"branch\" })\n\n // override existing - if not found create new\n const replaceDocumentProfileHQ = async ({ data, documentId, documentType: overrideDocumentType }: DocumentProfileReplaceHQProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const userId = data.userId\n // const documentId = data.documentId\n\n let _userHQBranches = await userBranchService.getUserBranchByUserId({ userId, onlyHQ: true, datatypes: [] })\n\n if (_userHQBranches.length <= 0) {\n throwError(`Unset main branch user id: ${userId}`)\n }\n\n let userHQBranches = _userHQBranches[0]\n\n // console.log('userHQBranches', userHQBranches)\n\n // check the profile HQ already exists - for type profile\n const existProfile = await getDocumentProfile({ documentId, documentType: _documentType, profileType: \"profile\" })\n\n let response: any = {}\n\n if (existProfile) {\n\n let payload: DocumentProfileUpdateProps = {\n documentProfileId: Number(existProfile?.document_profile_id),\n documentType: _documentType,\n data: {\n profileType: \"profile\",\n userBranchId: Number(userHQBranches.branch_id),\n userId: Number(userHQBranches.user_id),\n code: userHQBranches.branch_code ?? \"\",\n contactNo: userHQBranches.branch_contact ?? \"\",\n email: userHQBranches.branch_email ?? \"\",\n personName: `${userHQBranches?.pic_name ?? \"\"}`,\n postcode: userHQBranches.postcode ?? \"\",\n profileName: userHQBranches.branch_name ?? \"\",\n stateId: Number(userHQBranches.state_id),\n areaId: Number(userHQBranches.area_id),\n countryId: Number(userHQBranches.country_id),\n address1: userHQBranches.address_1 ?? \"\",\n address2: userHQBranches.address_2 ?? \"\",\n }\n }\n\n // update document profile for profile\n response = await updateDocumentProfile(payload)\n\n } else { // create new\n let payload: DocumentProfileCreateProps = {\n documentId,\n documentType: _documentType,\n data: {\n profileType: \"profile\",\n userBranchId: Number(userHQBranches.branch_id),\n userId: Number(userHQBranches.user_id),\n code: userHQBranches.branch_code ?? \"\",\n contactNo: userHQBranches.branch_contact ?? \"\",\n email: userHQBranches.branch_email ?? \"\",\n personName: `${userHQBranches?.pic_name ?? \"\"}`,\n postcode: userHQBranches.postcode ?? \"\",\n profileName: userHQBranches.branch_name ?? \"\",\n stateId: Number(userHQBranches.state_id),\n areaId: Number(userHQBranches.area_id),\n countryId: Number(userHQBranches.country_id),\n address1: userHQBranches.address_1 ?? \"\",\n address2: userHQBranches.address_2 ?? \"\",\n }\n }\n\n // create document profile for profile\n response = await createDocumentProfile(payload)\n\n }\n\n return response\n\n }\n\n // override existing - if not found create new\n const replaceDocumentProfileOther = async ({ data, documentId, documentProfileType = \"shipping\", documentType: overrideDocumentType }: DocumentProfileReplaceOtherProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const userBranchId = data.userBranchId\n // const userType = data.userType\n // const documentId = data.documentId\n\n let userBranch = await userBranchService.getUserBranch({ userBranchId, datatypes: [] })\n\n // console.log('userBranch', userBranch)\n\n if (!userBranch?.user_id) {\n throwError(`Invalid user id in user branch: ${userBranchId}`)\n }\n\n // check the profile other already exists - for other type than profile\n const existProfile = await getDocumentProfile({ documentId, documentType: _documentType, profileType: documentProfileType })\n\n let response: any = {}\n\n if (existProfile) {\n\n let payload: DocumentProfileUpdateProps = {\n documentProfileId: Number(existProfile?.document_profile_id),\n documentType: _documentType,\n data: {\n profileType: documentProfileType,\n userBranchId: Number(userBranch.branch_id),\n userId: Number(userBranch.user_id),\n\n code: data?.code ? data.code : String(userBranch.branch_code ?? \"\"),\n contactNo: data?.code ? data.code : String(userBranch.branch_contact ?? \"\"),\n email: data?.email ? data.email : String(userBranch.branch_email ?? \"\"),\n personName: data?.personName ? data.personName : String(`${userBranch?.pic_name ?? \"\"}`),\n postcode: data?.postcode ? data.postcode : String(userBranch.postcode ?? \"\"),\n profileName: data?.profileName ? data.profileName : String(userBranch.branch_name ?? \"\"),\n stateId: data?.stateId ? Number(data.stateId) : Number(userBranch.state_id),\n areaId: data?.areaId ? Number(data.areaId) : Number(userBranch.area_id),\n countryId: data?.countryId ? Number(data.countryId) : Number(userBranch.country_id),\n address1: data?.address1 ? data.address1 : String(userBranch.address_1 ?? \"\"),\n address2: data?.address2 ? data.address2 : String(userBranch.address_2 ?? \"\"),\n }\n }\n\n // update document profile for (shipping or billing)\n response = await updateDocumentProfile(payload)\n\n } else {\n\n let payload: DocumentProfileCreateProps = {\n documentId,\n documentType: _documentType,\n data: {\n profileType: documentProfileType,\n userBranchId: Number(userBranch.branch_id),\n userId: Number(userBranch.user_id),\n\n code: data?.code ? data.code : String(userBranch.branch_code ?? \"\"),\n contactNo: data?.code ? data.code : String(userBranch.branch_contact ?? \"\"),\n email: data?.email ? data.email : String(userBranch.branch_email ?? \"\"),\n personName: data?.personName ? data.personName : String(`${userBranch?.pic_name ?? \"\"}`),\n postcode: data?.postcode ? data.postcode : String(userBranch.postcode ?? \"\"),\n profileName: data?.profileName ? data.profileName : String(userBranch.branch_name ?? \"\"),\n stateId: data?.stateId ? Number(data.stateId) : Number(userBranch.state_id),\n areaId: data?.areaId ? Number(data.areaId) : Number(userBranch.area_id),\n countryId: data?.countryId ? Number(data.countryId) : Number(userBranch.country_id),\n address1: data?.address1 ? data.address1 : String(userBranch.address_1 ?? \"\"),\n address2: data?.address2 ? data.address2 : String(userBranch.address_2 ?? \"\"),\n }\n }\n\n // create document profile for (shipping or billing)\n response = await createDocumentProfile(payload)\n }\n\n return response\n\n }\n\n // private\n const createDocumentProfile = async ({ data, documentId, documentType: overrideDocumentType }: DocumentProfileCreateProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const _data = getCreatePayload(documentId, _documentType, data)\n\n if (!_data) {\n throw new Error(`Invalid create document(profile) payload: ${JSON.stringify(_data)}`);\n }\n\n // create document profile\n return await documentProfileModel.create({ data: _data })\n\n }\n\n // private\n const updateDocumentProfile = async ({ documentProfileId, data, documentType: overrideDocumentType }: DocumentProfileUpdateProps) => {\n\n const _documentType = overrideDocumentType || documentType\n\n const _data = getUpdatePayload(_documentType, data)\n\n if (!_data) {\n throw new Error(`Invalid update document(profile) payload: ${JSON.stringify(_data)}`);\n }\n\n // update document profile\n return await documentProfileModel.update({ id: documentProfileId, data: _data })\n\n }\n\n const getDocumentProfile = async ({ documentId = \"\", documentType = \"\", profileType = \"\" }: DocumentProfileGetProps) => {\n\n let filters = []\n\n if (documentType) {\n filters.push({ field: `${ModelDocumentProfileFields.document_type}`, operator: \"=\", value: documentType })\n }\n if (documentId) {\n filters.push({ field: `${ModelDocumentProfileFields.document_id}`, operator: \"=\", value: Number(documentId) })\n }\n if (profileType) {\n filters.push({ field: `${ModelDocumentProfileFields.type}`, operator: \"=\", value: profileType.toUpperCase() })\n }\n\n let { data } = await listDocumentProfiles({\n limit: 1,\n offset: 0,\n filters: filters as QueryList[\"filters\"],\n sortfield: `${ModelDocumentProfileFields.document_id}`,\n sortorder: \"ASC\",\n // datatypes: []\n })\n\n return data[0] ?? null;\n\n };\n\n const listDocumentProfiles = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n // datatypes = []\n }: DocumentProfileListProps) => {\n\n let sqlSelect: string[] = []\n let sqlRelation: string[] = []\n let sqlGroupBy: string[] = []\n\n let sqlSelectAgg: string[] = []\n let sqlRelationAgg: string[] = []\n\n sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n // sqlRelation = [\n // buildSqlRelation(\"left\", \"docpro\", \"users\", \"creator\", [\"docpro.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n // buildSqlRelation(\"left\", \"docpro\", \"users\", \"updater\", [\"docpro.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n // ]\n\n sqlRelation = [\n sqlRelationMaps.creator,\n sqlRelationMaps.updater\n ]\n\n // sqlRelationAgg = [\n // buildSqlRelation(\"left\", \"docpro\", \"document_items\", \"docitm\", [\"docpro.document_id = docitm.document_id\", \"docitm.isdelete = false\", \"docitm.istrash = false\"]),\n // ]\n\n sqlGroupBy = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `docpro.isdelete = false`,\n `docpro.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the data (pagination)\n // const sqlRaw = buildSqlRawSelect({\n // tableName: \"document_profiles\",\n // mainAlias: \"docpro\",\n // accountId: rest.accountId,\n // sqlSelect: [...sqlSelect, ...sqlSelectAgg],\n // sqlRelation: [...sqlRelation, ...sqlRelationAgg],\n // sqlWhere,\n // sqlGroupBy,\n // sqlOrderby,\n // sqlLimitOffset\n // })\n\n // let data = await documentModel.raw(sqlRaw)\n\n // // get the count\n // const sqlRawCount = buildSqlRawSelectCount({\n // tableName: \"document_profiles\",\n // mainAlias: \"docpro\",\n // accountId: rest.accountId,\n // sqlSelect,\n // sqlRelation,\n // sqlWhere,\n // sqlGroupBy,\n // sqlOrderby\n // })\n\n // let count = await documentModel.raw(sqlRawCount)\n\n // get the listing data & count\n const { data, total } = await getListWithCount({\n model: documentModel,\n tableName: \"document_profiles\",\n mainAlias: \"docpro\",\n countKey: `${ModelDocumentProfileFields.document_profile_id}`,\n accountId: rest.accountId,\n sqlRelationMaps,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg,\n sqlRelation,\n sqlRelationAgg,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n const response = {\n data,\n total\n }\n\n // const response = {\n // data,\n // total: data.length ? Number(count[0].filtered_count) : 0\n // }\n\n return response\n\n };\n\n const removeDocumentProfiles = async ({ documentIds }: DocumentProfileRemoveProps) => {\n\n if (!documentIds.length) throwError('documentIds is required');\n\n const response = await documentProfileModel.remove({ where: { [`${ModelDocumentProfileFields.document_id}`]: { in: documentIds } } });\n\n return response\n };\n\n return {\n replaceDocumentProfileHQ,\n replaceDocumentProfileOther,\n removeDocumentProfiles,\n // createDocumentProfile // no need export internal use only\n // updateDocumentProfile // no need export internal use only\n }\n\n}\n\n"]}
|