zudello-integration-sdk 1.0.13 → 1.0.15
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/package.json +1 -1
- package/src/index.js +2 -0
- package/src/sdk/submodules/bc/Universal.js +42 -22
- package/src/sdk/submodules/dear/Universal.js +1 -1
- package/src/sdk/submodules/fo/Universal.js +1 -1
- package/src/sdk/submodules/intacct/ApBill.js +1 -1
- package/src/sdk/submodules/intacct/PoDocument.js +1 -1
- package/src/sdk/submodules/jobready/Universal.js +1 -1
- package/src/sdk/submodules/myobAcumatica/OData.js +1 -1
- package/src/sdk/submodules/myobAcumatica/Universal.js +2 -2
- package/src/sdk/submodules/netsuite/Universal.js +1 -1
- package/src/sdk/submodules/netsuite-soap/PurchaseOrder.js +1 -1
- package/src/sdk/submodules/netsuite-soap/Receipt.js +1 -1
- package/src/sdk/submodules/netsuite-soap/Universal.js +1 -1
- package/src/sdk/submodules/netsuite-soap/UniversalTransaction.js +1 -1
- package/src/sdk/submodules/netsuite-soap/VendorCredit.js +1 -1
- package/src/sdk/submodules/nexvia/Universal.js +1 -1
- package/src/sdk/submodules/retailExpress/Universal.js +1 -1
- package/src/sdk/submodules/sybiz/Universal.js +1 -1
- package/src/sdk/submodules/zenoti/Universal.js +1 -1
- package/src/utils/apiInstance.js +29 -4
- package/src/utils/datasetHelper.js +81 -0
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -22,6 +22,7 @@ const Trigger = require('./utils/trigger')
|
|
|
22
22
|
const Properties = require('./utils/properties')
|
|
23
23
|
const MiscHelper = require('./utils/miscHelper')
|
|
24
24
|
const ModelHelper = require('./utils/modelHelper')
|
|
25
|
+
const DatasetHelper = require('./utils/datasetHelper')
|
|
25
26
|
const {
|
|
26
27
|
getFileContent,
|
|
27
28
|
uploadFile,
|
|
@@ -60,5 +61,6 @@ module.exports = {
|
|
|
60
61
|
Properties,
|
|
61
62
|
MiscHelper,
|
|
62
63
|
ModelHelper,
|
|
64
|
+
DatasetHelper,
|
|
63
65
|
S3Client
|
|
64
66
|
}
|
|
@@ -15,32 +15,48 @@ class UniversalModule {
|
|
|
15
15
|
* @param {string} method Method of request.
|
|
16
16
|
* @param {object} qs Some available filters inside: $top, $skip, $filter, $extend.
|
|
17
17
|
* @param {object} body Some available data inside.
|
|
18
|
+
* @param {string} apiProvider API Provider.
|
|
19
|
+
* @param {string} apiGroup API Group.
|
|
18
20
|
* @returns {object} Universal Request Response.
|
|
19
21
|
*/
|
|
20
|
-
async request ({ url, method, qs = {}, body = {} }) {
|
|
22
|
+
async request ({ url, method, qs = {}, body = {}, apiProvider = null, apiGroup = null }) {
|
|
21
23
|
const validateIsEmpty = this.module.validator.isEmpty({ url, method })
|
|
22
24
|
|
|
23
25
|
if (!validateIsEmpty.valid) {
|
|
24
26
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
value: JSON.stringify(body)
|
|
42
|
-
}
|
|
29
|
+
const mappableParams = {
|
|
30
|
+
url: {
|
|
31
|
+
value: url
|
|
32
|
+
},
|
|
33
|
+
method: {
|
|
34
|
+
value: method
|
|
35
|
+
},
|
|
36
|
+
qs: {
|
|
37
|
+
isMap: true,
|
|
38
|
+
value: JSON.stringify(qs)
|
|
39
|
+
},
|
|
40
|
+
body: {
|
|
41
|
+
isMap: true,
|
|
42
|
+
value: JSON.stringify(body)
|
|
43
43
|
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (apiProvider) {
|
|
47
|
+
mappableParams.apiProvider = {
|
|
48
|
+
value: apiProvider
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (apiGroup) {
|
|
53
|
+
mappableParams.apiGroup = {
|
|
54
|
+
value: apiGroup
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/0d7314b0-a105-49b0-b8d4-09844c91cc0c`, {
|
|
59
|
+
mappable_parameters: mappableParams
|
|
44
60
|
})
|
|
45
61
|
}
|
|
46
62
|
|
|
@@ -49,9 +65,11 @@ class UniversalModule {
|
|
|
49
65
|
* @param {string} url URL of listed data.
|
|
50
66
|
* @param {string} method Method of listed data.
|
|
51
67
|
* @param {object} qs Some available filters inside: $top, $skip, $filter, $extend.
|
|
68
|
+
* @param {string} apiProvider API Provider.
|
|
69
|
+
* @param {string} apiGroup API Group.
|
|
52
70
|
* @returns {object} Universal List Response.
|
|
53
71
|
*/
|
|
54
|
-
async list ({ url, method, qs = {} }) {
|
|
72
|
+
async list ({ url, method, qs = {}, apiProvider = null, apiGroup = null }) {
|
|
55
73
|
const validateIsEmpty = this.module.validator.isEmpty({ url, method })
|
|
56
74
|
|
|
57
75
|
if (!validateIsEmpty.valid) {
|
|
@@ -66,7 +84,7 @@ class UniversalModule {
|
|
|
66
84
|
qs.$top = 100
|
|
67
85
|
}
|
|
68
86
|
|
|
69
|
-
return await this.request({ url, method, qs })
|
|
87
|
+
return await this.request({ url, method, qs, apiProvider, apiGroup })
|
|
70
88
|
}
|
|
71
89
|
|
|
72
90
|
/**
|
|
@@ -74,9 +92,11 @@ class UniversalModule {
|
|
|
74
92
|
* @param {string} url URL of listed data.
|
|
75
93
|
* @param {string} method Method of listed data.
|
|
76
94
|
* @param {object} qs Some available filters inside: $top, $skip, $filter, $extend.
|
|
95
|
+
* @param {string} apiProvider API Provider.
|
|
96
|
+
* @param {string} apiGroup API Group.
|
|
77
97
|
* @returns {object} Auto Pagination responses.
|
|
78
98
|
*/
|
|
79
|
-
async * autoPaginationList ({ url, method, qs = {} }) {
|
|
99
|
+
async * autoPaginationList ({ url, method, qs = {}, apiProvider = null, apiGroup = null }) {
|
|
80
100
|
if (!qs.$skip) {
|
|
81
101
|
qs.$skip = 0
|
|
82
102
|
}
|
|
@@ -85,7 +105,7 @@ class UniversalModule {
|
|
|
85
105
|
qs.$top = 100
|
|
86
106
|
}
|
|
87
107
|
|
|
88
|
-
let response = await this.list({ url, method, qs })
|
|
108
|
+
let response = await this.list({ url, method, qs, apiProvider, apiGroup })
|
|
89
109
|
let currentPageCount = response?.data?.value?.length
|
|
90
110
|
let currentOffset = qs.$skip
|
|
91
111
|
|
|
@@ -97,7 +117,7 @@ class UniversalModule {
|
|
|
97
117
|
|
|
98
118
|
qs.$skip = currentOffset
|
|
99
119
|
|
|
100
|
-
response = await this.list({ url, method, qs })
|
|
120
|
+
response = await this.list({ url, method, qs, apiProvider, apiGroup })
|
|
101
121
|
currentPageCount = response?.data?.value?.length
|
|
102
122
|
|
|
103
123
|
yield response
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/c0292290-24f9-419a-b319-d0de76e479a5`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/80ff022b-6789-48d9-9a2c-25ecd6f19545`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -18,7 +18,7 @@ class ApBillModule {
|
|
|
18
18
|
* @returns {object} Create AP Bill Response.
|
|
19
19
|
*/
|
|
20
20
|
async create ({ ...fields }) {
|
|
21
|
-
return await this.module.makeRequest('
|
|
21
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/afed01d9-d8f4-44ff-b736-d45e2d3aaa48`, {
|
|
22
22
|
mappable_parameters: {
|
|
23
23
|
debug: {
|
|
24
24
|
value: false
|
|
@@ -18,7 +18,7 @@ class PoDocumentModule {
|
|
|
18
18
|
* @returns {object} Create PO Document Response.
|
|
19
19
|
*/
|
|
20
20
|
async create ({ ...fields }) {
|
|
21
|
-
return await this.module.makeRequest('
|
|
21
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/48dad8d8-cbc4-41a0-a006-5fd3e76e0273`, {
|
|
22
22
|
mappable_parameters: {
|
|
23
23
|
debug: {
|
|
24
24
|
value: false
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/107c52fc-0404-4768-8d0d-deb7a348b8a3`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -24,7 +24,7 @@ class ODataModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/fd070d22-ec9e-4d85-82ab-6645d7fd4326`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -25,7 +25,7 @@ class UniversalModule {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
return await this.module.makeRequest(
|
|
28
|
-
"
|
|
28
|
+
"POST",
|
|
29
29
|
`${this.module.apiURL}/zintegrations/action/5f752f97-03f9-4893-8245-7d03cf217e37`,
|
|
30
30
|
{
|
|
31
31
|
mappable_parameters: {
|
|
@@ -123,7 +123,7 @@ class UniversalModule {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
return await this.module.makeRequest(
|
|
126
|
-
"
|
|
126
|
+
"POST",
|
|
127
127
|
`${this.module.apiURL}/zintegrations/action/086840ce-942c-44ee-b2dd-ca66e5dd7b02`,
|
|
128
128
|
{
|
|
129
129
|
mappable_parameters: {
|
|
@@ -29,7 +29,7 @@ class UniversalModule {
|
|
|
29
29
|
url = `${url}?limit=${qs.limit}&offset=${qs.offset}`
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
return await this.module.makeRequest('
|
|
32
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/41a68068-6812-4634-a464-aab17d6b2358`, {
|
|
33
33
|
mappable_parameters: {
|
|
34
34
|
url: {
|
|
35
35
|
value: url
|
|
@@ -17,7 +17,7 @@ class PurchaseOrderModule {
|
|
|
17
17
|
* @returns {object} Response.
|
|
18
18
|
*/
|
|
19
19
|
async create ({ body, memo, customForm }) {
|
|
20
|
-
return await this.module.makeRequest('
|
|
20
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/23509d2d-47dd-4aa3-b8ab-a0057c5d3a0d`, {
|
|
21
21
|
mappable_parameters: {
|
|
22
22
|
debug: {
|
|
23
23
|
value: false
|
|
@@ -17,7 +17,7 @@ class ReceiptModule {
|
|
|
17
17
|
* @returns {object} Response.
|
|
18
18
|
*/
|
|
19
19
|
async create ({ body, memo, customForm }) {
|
|
20
|
-
return await this.module.makeRequest('
|
|
20
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/76c5863a-4c54-47f7-a4a9-42edfac82300`, {
|
|
21
21
|
mappable_parameters: {
|
|
22
22
|
debug: {
|
|
23
23
|
value: false
|
|
@@ -59,7 +59,7 @@ class UniversalModule {
|
|
|
59
59
|
return this.module.responseHandler.error(validateIncludes.errors)
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
return await this.module.makeRequest('
|
|
62
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/0491e05e-8f35-4422-a037-8490de1c37b4`, {
|
|
63
63
|
mappable_parameters: {
|
|
64
64
|
type: {
|
|
65
65
|
isMap: false,
|
|
@@ -73,7 +73,7 @@ class UniversalTransactionModule {
|
|
|
73
73
|
return this.module.responseHandler.error(validateIncludes.errors)
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
return await this.module.makeRequest('
|
|
76
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/c0682187-6d05-4ccf-9a43-1250ca867588`, {
|
|
77
77
|
mappable_parameters: {
|
|
78
78
|
type: {
|
|
79
79
|
isMap: false,
|
|
@@ -17,7 +17,7 @@ class VendorCreditModule {
|
|
|
17
17
|
* @returns {object} Response.
|
|
18
18
|
*/
|
|
19
19
|
async create ({ body, memo, customForm }) {
|
|
20
|
-
return await this.module.makeRequest('
|
|
20
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/cdb6be5c-1137-425e-a162-76cfdbc8e65b`, {
|
|
21
21
|
mappable_parameters: {
|
|
22
22
|
debug: {
|
|
23
23
|
value: false
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/33b775b3-0ef4-4ed7-bc16-5a3396f26a7a`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/ae4efc7a-b6ba-4093-8e06-fa9d846e4e29`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/37e52a1d-aa46-4f9c-9931-bd651e5081f2`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
|
@@ -24,7 +24,7 @@ class UniversalModule {
|
|
|
24
24
|
return this.module.responseHandler.error(validateIsEmpty.errors)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return await this.module.makeRequest('
|
|
27
|
+
return await this.module.makeRequest('POST', `${this.module.apiURL}/zintegrations/action/699323d6-1f13-4748-a539-0c45b7fa6a84`, {
|
|
28
28
|
mappable_parameters: {
|
|
29
29
|
url: {
|
|
30
30
|
value: url
|
package/src/utils/apiInstance.js
CHANGED
|
@@ -9,6 +9,7 @@ class ApiInstance {
|
|
|
9
9
|
*/
|
|
10
10
|
constructor () {
|
|
11
11
|
this.bearerToken = null
|
|
12
|
+
this.retryStatuses = [502, 504]
|
|
12
13
|
|
|
13
14
|
this.responseHandler = new ResponseHandler()
|
|
14
15
|
|
|
@@ -39,7 +40,7 @@ class ApiInstance {
|
|
|
39
40
|
* @param {object} headers Request Headers.
|
|
40
41
|
* @returns {object} Response Data.
|
|
41
42
|
*/
|
|
42
|
-
async get (url, params, headers, returnHeaders = false, callback = () => {}) {
|
|
43
|
+
async get (url, params, headers, returnHeaders = false, callback = () => {}, retryCount = 0) {
|
|
43
44
|
try {
|
|
44
45
|
const requestBody = { params, headers }
|
|
45
46
|
|
|
@@ -67,6 +68,11 @@ class ApiInstance {
|
|
|
67
68
|
headers
|
|
68
69
|
})
|
|
69
70
|
|
|
71
|
+
if (this.retryStatuses.includes(error?.response?.status) && retryCount === 0) {
|
|
72
|
+
await this.sleep(20000)
|
|
73
|
+
return await this.get(url, params, headers, returnHeaders, callback, retryCount + 1)
|
|
74
|
+
}
|
|
75
|
+
|
|
70
76
|
if (error?.response?.status === 302) {
|
|
71
77
|
return this.responseHandler.success(error?.response?.headers?.location)
|
|
72
78
|
}
|
|
@@ -93,7 +99,7 @@ class ApiInstance {
|
|
|
93
99
|
* @param {object} params Request Params.
|
|
94
100
|
* @returns {object} Response Data.
|
|
95
101
|
*/
|
|
96
|
-
async post (url, data, headers, params = {}, callback = () => {}) {
|
|
102
|
+
async post (url, data, headers, params = {}, callback = () => {}, retryCount = 0) {
|
|
97
103
|
try {
|
|
98
104
|
const response = await this.axiosInstance.post(url, data, { headers, params })
|
|
99
105
|
|
|
@@ -119,6 +125,11 @@ class ApiInstance {
|
|
|
119
125
|
body: data
|
|
120
126
|
})
|
|
121
127
|
|
|
128
|
+
if (this.retryStatuses.includes(error?.response?.status) && retryCount === 0) {
|
|
129
|
+
await this.sleep(20000)
|
|
130
|
+
return await this.post(url, data, headers, params, callback, retryCount + 1)
|
|
131
|
+
}
|
|
132
|
+
|
|
122
133
|
if (error?.response?.status === 500) {
|
|
123
134
|
return this.responseHandler.error(['Something went wrong.'])
|
|
124
135
|
}
|
|
@@ -135,7 +146,7 @@ class ApiInstance {
|
|
|
135
146
|
* @param {object} data PUT Data.
|
|
136
147
|
* @returns {object} Response Data.
|
|
137
148
|
*/
|
|
138
|
-
async put (url, data, headers, params = {}, callback = () => {}) {
|
|
149
|
+
async put (url, data, headers, params = {}, callback = () => {}, retryCount = 0) {
|
|
139
150
|
try {
|
|
140
151
|
const response = await this.axiosInstance.put(url, data, { headers, params })
|
|
141
152
|
|
|
@@ -157,6 +168,11 @@ class ApiInstance {
|
|
|
157
168
|
body: data
|
|
158
169
|
})
|
|
159
170
|
|
|
171
|
+
if (this.retryStatuses.includes(error?.response?.status) && retryCount === 0) {
|
|
172
|
+
await this.sleep(20000)
|
|
173
|
+
return await this.put(url, data, headers, params, callback, retryCount + 1)
|
|
174
|
+
}
|
|
175
|
+
|
|
160
176
|
if (error?.response?.data) {
|
|
161
177
|
return this.responseHandler.error([error?.response?.data])
|
|
162
178
|
}
|
|
@@ -170,7 +186,7 @@ class ApiInstance {
|
|
|
170
186
|
* @param {string} url Request URL.
|
|
171
187
|
* @returns {object} Response Data.
|
|
172
188
|
*/
|
|
173
|
-
async delete (url, callback = () => {}) {
|
|
189
|
+
async delete (url, callback = () => {}, retryCount = 0) {
|
|
174
190
|
try {
|
|
175
191
|
const response = await this.axiosInstance.delete(url)
|
|
176
192
|
|
|
@@ -186,6 +202,11 @@ class ApiInstance {
|
|
|
186
202
|
response: error?.response?.data
|
|
187
203
|
})
|
|
188
204
|
|
|
205
|
+
if (this.retryStatuses.includes(error?.response?.status) && retryCount === 0) {
|
|
206
|
+
await this.sleep(20000)
|
|
207
|
+
return await this.delete(url, callback, retryCount + 1)
|
|
208
|
+
}
|
|
209
|
+
|
|
189
210
|
if (error?.response?.data) {
|
|
190
211
|
return this.responseHandler.error([error?.response?.data])
|
|
191
212
|
}
|
|
@@ -193,6 +214,10 @@ class ApiInstance {
|
|
|
193
214
|
return this.responseHandler.error(['Something went wrong.'])
|
|
194
215
|
}
|
|
195
216
|
}
|
|
217
|
+
|
|
218
|
+
async sleep(ms) {
|
|
219
|
+
return new Promise(resolve => setTimeout(resolve, ms))
|
|
220
|
+
}
|
|
196
221
|
}
|
|
197
222
|
|
|
198
223
|
module.exports = ApiInstance
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const _ = require('lodash')
|
|
4
|
+
|
|
5
|
+
class DatasetHelper {
|
|
6
|
+
constructor(zudello, logger, data = null, uuid = null) {
|
|
7
|
+
this.zudello = zudello
|
|
8
|
+
this.logger = logger
|
|
9
|
+
|
|
10
|
+
this.data = data
|
|
11
|
+
this.uuid = uuid
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async load(uuid, failCallback) {
|
|
15
|
+
failCallback = failCallback || ((data) => this.defaultFailCallback(data))
|
|
16
|
+
|
|
17
|
+
this.logger.info('DatasetUUID', uuid)
|
|
18
|
+
|
|
19
|
+
return await this.get(uuid, failCallback)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async get(uuid, failCallback) {
|
|
23
|
+
failCallback = failCallback || ((data) => this.defaultFailCallback(data))
|
|
24
|
+
|
|
25
|
+
if (!uuid) {
|
|
26
|
+
return failCallback({ uuid })
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const fetchedDataset = await this.zudello.search({
|
|
30
|
+
model: 'DataSetRow',
|
|
31
|
+
offset: 0,
|
|
32
|
+
limit: 10000000,
|
|
33
|
+
select: ['uuid', 'custom'],
|
|
34
|
+
order_by: ['ordering'],
|
|
35
|
+
filter: {
|
|
36
|
+
dataset_uuid: uuid
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
this.logger.debug('Fetched Dataset', fetchedDataset)
|
|
41
|
+
|
|
42
|
+
if (fetchedDataset && fetchedDataset.data) {
|
|
43
|
+
const data = fetchedDataset.data?.data || null
|
|
44
|
+
|
|
45
|
+
if (data) {
|
|
46
|
+
return new DatasetHelper(this.zudello, this.logger, data, uuid)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return failCallback({ uuid })
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
length() {
|
|
54
|
+
return this.data ? this.data.length : 0
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
rows(mapping = null, filter = null) {
|
|
58
|
+
let data = this.data
|
|
59
|
+
|
|
60
|
+
if (!data) {
|
|
61
|
+
return []
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (filter) {
|
|
65
|
+
data = _.filter(data, filter)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (mapping) {
|
|
69
|
+
data = _.map(data, mapping)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return data
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
defaultFailCallback(data) {
|
|
76
|
+
this.logger.error('Unable to find Dataset', data)
|
|
77
|
+
throw new Error('Unable to find Dataset')
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
module.exports = DatasetHelper
|