@fraym/crud 0.16.1 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -27
- package/dist/delivery/auth.d.ts +7 -0
- package/dist/delivery/auth.js +15 -0
- package/dist/delivery/client.d.ts +10 -6
- package/dist/delivery/client.js +17 -13
- package/dist/delivery/create.d.ts +12 -3
- package/dist/delivery/create.js +25 -4
- package/dist/delivery/delete.d.ts +3 -1
- package/dist/delivery/delete.js +6 -4
- package/dist/delivery/eventMetadata.d.ts +4 -0
- package/dist/delivery/eventMetadata.js +2 -0
- package/dist/delivery/getData.d.ts +3 -1
- package/dist/delivery/getData.js +12 -12
- package/dist/delivery/getDataList.d.ts +3 -1
- package/dist/delivery/getDataList.js +5 -5
- package/dist/delivery/update.d.ts +13 -1
- package/dist/delivery/update.js +29 -6
- package/dist/management/getAll.js +3 -0
- package/dist/management/remove.js +4 -1
- package/dist/management/upsert.js +4 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -95,42 +95,57 @@ const list = await managementClient.getAllTypes();
|
|
|
95
95
|
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
96
96
|
|
|
97
97
|
```typescript
|
|
98
|
-
const
|
|
98
|
+
const response = await client.create<any>("YourCrudType", authData, {
|
|
99
99
|
// values here
|
|
100
100
|
});
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
+
The response contains the following fields:
|
|
104
|
+
|
|
105
|
+
In case of no validation errors:
|
|
106
|
+
|
|
107
|
+
- `data`: The new data after your create action
|
|
108
|
+
|
|
109
|
+
In case of validation errors:
|
|
110
|
+
|
|
111
|
+
- `validationErrors`: List of global validation errors that are not related to a single field
|
|
112
|
+
- `fieldValidationErrors`: Validation errors mapped by the name of the field that they relate to
|
|
113
|
+
|
|
103
114
|
### Update data
|
|
104
115
|
|
|
105
116
|
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
106
|
-
The `id` has to match the id of the data that you want to update.
|
|
107
117
|
|
|
108
118
|
```typescript
|
|
109
|
-
await client.update("
|
|
119
|
+
const response = await client.update<any>("YourCrudType", authData, {
|
|
110
120
|
// values here
|
|
111
121
|
});
|
|
112
122
|
```
|
|
113
123
|
|
|
114
|
-
|
|
124
|
+
The response contains the following fields:
|
|
115
125
|
|
|
116
|
-
|
|
126
|
+
In case of no validation errors:
|
|
117
127
|
|
|
118
|
-
|
|
128
|
+
- `data`: The new data after your create action
|
|
119
129
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
130
|
+
In case of validation errors:
|
|
131
|
+
|
|
132
|
+
- `validationErrors`: List of global validation errors that are not related to a single field
|
|
133
|
+
- `fieldValidationErrors`: Validation errors mapped by the name of the field that they relate to
|
|
134
|
+
|
|
135
|
+
### Delete data
|
|
136
|
+
|
|
137
|
+
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
123
138
|
|
|
124
139
|
Delete data matching a specific ID:
|
|
125
140
|
|
|
126
141
|
```typescript
|
|
127
|
-
await client.
|
|
142
|
+
const numberOfDeletedEntries = await client.deleteDataById("YourCrudType", authData, "id");
|
|
128
143
|
```
|
|
129
144
|
|
|
130
145
|
Delete data matching a filter (see filter parameter for `getDataList` for details):
|
|
131
146
|
|
|
132
147
|
```typescript
|
|
133
|
-
await client.
|
|
148
|
+
const numberOfDeletedEntries = await client.deleteDataByFilter("YourCrudType", authData, {
|
|
134
149
|
fields: {
|
|
135
150
|
fieldName: {
|
|
136
151
|
operation: "equals",
|
|
@@ -143,17 +158,31 @@ await client.delete("tenantId", "YourCrudType", undefined, {
|
|
|
143
158
|
|
|
144
159
|
### Get a single data element
|
|
145
160
|
|
|
146
|
-
|
|
147
|
-
The `id` has to match the id of the data that you want to get.
|
|
161
|
+
A filter could look like this:
|
|
148
162
|
|
|
149
|
-
```
|
|
150
|
-
const
|
|
163
|
+
```go
|
|
164
|
+
const filter := {
|
|
165
|
+
fields: {
|
|
166
|
+
fieldName: {
|
|
167
|
+
operation: "equals",
|
|
168
|
+
type: "Int",
|
|
169
|
+
value: 123,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}
|
|
151
173
|
```
|
|
152
174
|
|
|
153
|
-
|
|
175
|
+
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
176
|
+
The `id` has to match the id of the data that you want to get.
|
|
154
177
|
|
|
155
178
|
```typescript
|
|
156
|
-
const data = await client.getData(
|
|
179
|
+
const data = await client.getData(
|
|
180
|
+
"YourCrudType",
|
|
181
|
+
authData,
|
|
182
|
+
"id",
|
|
183
|
+
filter,
|
|
184
|
+
returnEmptyDataIfNotFound
|
|
185
|
+
);
|
|
157
186
|
```
|
|
158
187
|
|
|
159
188
|
### Get (paginated / filtered / ordered) data
|
|
@@ -163,21 +192,28 @@ The name of `YourCrudType` has to equal your type name in your schema (also in c
|
|
|
163
192
|
No pagination:
|
|
164
193
|
|
|
165
194
|
```typescript
|
|
166
|
-
const
|
|
195
|
+
const dataList = await client.getDataList("YourCrudType", authData);
|
|
167
196
|
```
|
|
168
197
|
|
|
198
|
+
The dataList response contains the following fields:
|
|
199
|
+
|
|
200
|
+
- `limit`: The pagination limit
|
|
201
|
+
- `page`: The pagination page
|
|
202
|
+
- `total`: The total amount of elements matching the given filter
|
|
203
|
+
- `data`: The selected data
|
|
204
|
+
|
|
169
205
|
With pagination:
|
|
170
206
|
|
|
171
207
|
```typescript
|
|
172
208
|
const limit = 50; // elements to query per page
|
|
173
209
|
const page = 1; // number of the page you want to select, first page starts at: 1
|
|
174
|
-
const
|
|
210
|
+
const dataList = await client.getDataList("YourCrudType", authData, limit, page);
|
|
175
211
|
```
|
|
176
212
|
|
|
177
213
|
With filter:
|
|
178
214
|
|
|
179
215
|
```typescript
|
|
180
|
-
const
|
|
216
|
+
const dataList = await client.getDataList("YourCrudType", authData, undefined, undefined, {
|
|
181
217
|
fields: {
|
|
182
218
|
fieldName: {
|
|
183
219
|
operation: "equals",
|
|
@@ -232,15 +268,22 @@ With order:
|
|
|
232
268
|
All order definitions are prioritized in the order that they are defined (the first definition is prioritized over the second).
|
|
233
269
|
|
|
234
270
|
```typescript
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
271
|
+
const dataList = await client.getDataList(
|
|
272
|
+
"YourCrudType",
|
|
273
|
+
authData,
|
|
274
|
+
undefined,
|
|
275
|
+
undefined,
|
|
276
|
+
undefined,
|
|
277
|
+
[
|
|
278
|
+
{
|
|
279
|
+
field: "fieldName",
|
|
280
|
+
descending: true, // omit this value for asc order
|
|
281
|
+
},
|
|
282
|
+
]
|
|
283
|
+
);
|
|
241
284
|
```
|
|
242
285
|
|
|
243
|
-
### Gracefully close the
|
|
286
|
+
### Gracefully close the client
|
|
244
287
|
|
|
245
288
|
You won't lose any data if you don't. Use it for your peace of mind.
|
|
246
289
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProtobufAuthData = void 0;
|
|
4
|
+
const getProtobufAuthData = (auth) => {
|
|
5
|
+
const data = {};
|
|
6
|
+
for (let key in auth.data) {
|
|
7
|
+
data[key] = JSON.stringify(auth.data[key]);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
tenantId: auth.tenantId,
|
|
11
|
+
scopes: auth.scopes,
|
|
12
|
+
data,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
exports.getProtobufAuthData = getProtobufAuthData;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { DeliveryClientConfig } from "../config/config";
|
|
2
|
-
import {
|
|
2
|
+
import { CreateResponse } from "./create";
|
|
3
|
+
import { UpdateResponse } from "./update";
|
|
3
4
|
import { GetCrudDataList } from "./getDataList";
|
|
4
5
|
import { Filter } from "./filter";
|
|
5
6
|
import { Order } from "./order";
|
|
7
|
+
import { AuthData } from "./auth";
|
|
8
|
+
import { EventMetadata } from "./eventMetadata";
|
|
6
9
|
export interface DeliveryClient {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
getData: <T extends {}>(type: string, authData: AuthData, id: string, filter?: Filter, returnEmptyDataIfNotFound?: boolean) => Promise<T | null>;
|
|
11
|
+
getDataList: <T extends {}>(type: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[]) => Promise<GetCrudDataList<T>>;
|
|
12
|
+
create: <T extends {}>(type: string, authData: AuthData, data: Record<string, any>, id?: string, eventMetadata?: EventMetadata) => Promise<CreateResponse<T>>;
|
|
13
|
+
update: <T extends {}>(type: string, authData: AuthData, id: string, data: Record<string, any>, eventMetadata?: EventMetadata) => Promise<UpdateResponse<T>>;
|
|
14
|
+
deleteDataById: (type: string, authData: AuthData, id: string, eventMetadata?: EventMetadata) => Promise<number>;
|
|
15
|
+
deleteDataByFilter: (type: string, authData: AuthData, filter?: Filter, eventMetadata?: EventMetadata) => Promise<number>;
|
|
12
16
|
close: () => Promise<void>;
|
|
13
17
|
}
|
|
14
18
|
export declare const newDeliveryClient: (config?: DeliveryClientConfig) => Promise<DeliveryClient>;
|
package/dist/delivery/client.js
CHANGED
|
@@ -16,30 +16,34 @@ const newDeliveryClient = async (config) => {
|
|
|
16
16
|
"grpc.keepalive_timeout_ms": config.keepaliveTimeout,
|
|
17
17
|
"grpc.keepalive_permit_without_calls": 1,
|
|
18
18
|
});
|
|
19
|
-
const
|
|
20
|
-
return await (0,
|
|
19
|
+
const getData = async (type, authData, id, filter = { fields: {}, and: [], or: [] }, returnEmptyDataIfNotFound = false) => {
|
|
20
|
+
return await (0, getData_1.getCrudData)(type, authData, id, filter, returnEmptyDataIfNotFound, serviceClient);
|
|
21
21
|
};
|
|
22
|
-
const
|
|
23
|
-
return await (0,
|
|
22
|
+
const getDataList = async (type, authData, limit = 0, page = 1, filter = { fields: {}, and: [], or: [] }, order = []) => {
|
|
23
|
+
return await (0, getDataList_1.getCrudDataList)(type, authData, limit, page, filter, order, serviceClient);
|
|
24
24
|
};
|
|
25
|
-
const
|
|
26
|
-
return await (0,
|
|
25
|
+
const create = async (type, authData, data, id = "", eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
26
|
+
return await (0, create_1.createCrudData)(type, authData, data, id, eventMetadata, serviceClient);
|
|
27
27
|
};
|
|
28
|
-
const
|
|
29
|
-
return await (0,
|
|
28
|
+
const update = async (type, authData, id, data, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
29
|
+
return await (0, update_1.updateCrudData)(type, authData, id, data, eventMetadata, serviceClient);
|
|
30
30
|
};
|
|
31
|
-
const
|
|
32
|
-
return await (0,
|
|
31
|
+
const deleteDataById = async (type, authData, id, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
32
|
+
return await (0, delete_1.deleteCrudData)(type, authData, id, { fields: {}, and: [], or: [] }, eventMetadata, serviceClient);
|
|
33
|
+
};
|
|
34
|
+
const deleteDataByFilter = async (type, authData, filter = { fields: {}, and: [], or: [] }, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
35
|
+
return await (0, delete_1.deleteCrudData)(type, authData, "", filter, eventMetadata, serviceClient);
|
|
33
36
|
};
|
|
34
37
|
const close = async () => {
|
|
35
38
|
serviceClient.close();
|
|
36
39
|
};
|
|
37
40
|
return {
|
|
38
|
-
create,
|
|
39
|
-
update,
|
|
40
|
-
delete: deleter,
|
|
41
41
|
getData,
|
|
42
42
|
getDataList,
|
|
43
|
+
create,
|
|
44
|
+
update,
|
|
45
|
+
deleteDataById,
|
|
46
|
+
deleteDataByFilter,
|
|
43
47
|
close,
|
|
44
48
|
};
|
|
45
49
|
};
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { EventMetadata } from "./eventMetadata";
|
|
4
|
+
export type CreateResponse<T extends {}> = CreateSuccessResponse<T> | CreateValidationResponse;
|
|
5
|
+
export interface CreateSuccessResponse<T extends {}> {
|
|
6
|
+
data: T;
|
|
4
7
|
}
|
|
5
|
-
export
|
|
8
|
+
export interface CreateValidationResponse {
|
|
9
|
+
validationErrors: string[];
|
|
10
|
+
fieldValidationErrors: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export declare const isCreateSuccessResponse: <T extends {}>(response: CreateResponse<T>) => response is CreateSuccessResponse<T>;
|
|
13
|
+
export declare const isCreateValidationResponse: <T extends {}>(response: CreateResponse<T>) => response is CreateValidationResponse;
|
|
14
|
+
export declare const createCrudData: <T extends {}>(type: string, authData: AuthData, data: Record<string, any>, id: string, eventMetadata: EventMetadata, serviceClient: DeliveryServiceClient) => Promise<CreateResponse<T>>;
|
package/dist/delivery/create.js
CHANGED
|
@@ -1,24 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createCrudData = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.createCrudData = exports.isCreateValidationResponse = exports.isCreateSuccessResponse = void 0;
|
|
4
|
+
const auth_1 = require("./auth");
|
|
5
|
+
const isCreateSuccessResponse = (response) => {
|
|
6
|
+
return response.hasOwnProperty("data");
|
|
7
|
+
};
|
|
8
|
+
exports.isCreateSuccessResponse = isCreateSuccessResponse;
|
|
9
|
+
const isCreateValidationResponse = (response) => {
|
|
10
|
+
return !response.hasOwnProperty("data");
|
|
11
|
+
};
|
|
12
|
+
exports.isCreateValidationResponse = isCreateValidationResponse;
|
|
13
|
+
const createCrudData = async (type, authData, data, id, eventMetadata, serviceClient) => {
|
|
5
14
|
const requestData = {};
|
|
6
15
|
for (const key in data) {
|
|
7
16
|
requestData[key] = JSON.stringify(data[key]);
|
|
8
17
|
}
|
|
9
18
|
return new Promise((resolve, reject) => {
|
|
10
19
|
serviceClient.createEntry({
|
|
11
|
-
tenantId,
|
|
12
20
|
type,
|
|
21
|
+
auth: (0, auth_1.getProtobufAuthData)(authData),
|
|
13
22
|
data: requestData,
|
|
14
23
|
id,
|
|
24
|
+
eventMetadata,
|
|
15
25
|
}, (error, response) => {
|
|
16
26
|
if (error) {
|
|
17
27
|
reject(error.message);
|
|
18
28
|
return;
|
|
19
29
|
}
|
|
30
|
+
if (response.validationErrors || response.fieldValidationErrors) {
|
|
31
|
+
resolve({
|
|
32
|
+
validationErrors: response.validationErrors,
|
|
33
|
+
fieldValidationErrors: response.fieldValidationErrors,
|
|
34
|
+
});
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const data = {};
|
|
38
|
+
for (const key in response.newData) {
|
|
39
|
+
data[key] = JSON.parse(response.newData[key]);
|
|
40
|
+
}
|
|
20
41
|
resolve({
|
|
21
|
-
|
|
42
|
+
data,
|
|
22
43
|
});
|
|
23
44
|
});
|
|
24
45
|
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { EventMetadata } from "./eventMetadata";
|
|
2
4
|
import { Filter } from "./filter";
|
|
3
|
-
export declare const deleteCrudData: (
|
|
5
|
+
export declare const deleteCrudData: (type: string, authData: AuthData, id: string, filter: Filter, eventMetadata: EventMetadata, serviceClient: DeliveryServiceClient) => Promise<number>;
|
package/dist/delivery/delete.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deleteCrudData = void 0;
|
|
4
|
+
const auth_1 = require("./auth");
|
|
4
5
|
const filter_1 = require("./filter");
|
|
5
|
-
const deleteCrudData = async (
|
|
6
|
+
const deleteCrudData = async (type, authData, id, filter, eventMetadata, serviceClient) => {
|
|
6
7
|
return new Promise((resolve, reject) => {
|
|
7
8
|
serviceClient.deleteEntries({
|
|
8
|
-
tenantId,
|
|
9
9
|
type,
|
|
10
|
+
auth: (0, auth_1.getProtobufAuthData)(authData),
|
|
10
11
|
id,
|
|
11
12
|
filter: (0, filter_1.getProtobufEntryFilter)(filter),
|
|
12
|
-
|
|
13
|
+
eventMetadata,
|
|
14
|
+
}, (error, response) => {
|
|
13
15
|
if (error) {
|
|
14
16
|
reject(error.message);
|
|
15
17
|
return;
|
|
16
18
|
}
|
|
17
|
-
resolve();
|
|
19
|
+
resolve(response.numberOfDeletedEntries);
|
|
18
20
|
});
|
|
19
21
|
});
|
|
20
22
|
};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
-
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { Filter } from "./filter";
|
|
4
|
+
export declare const getCrudData: <T extends {}>(type: string, authData: AuthData, id: string, filter: Filter, returnEmptyDataIfNotFound: boolean, serviceClient: DeliveryServiceClient) => Promise<T | null>;
|
package/dist/delivery/getData.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCrudData = void 0;
|
|
4
|
-
const
|
|
4
|
+
const auth_1 = require("./auth");
|
|
5
|
+
const filter_1 = require("./filter");
|
|
6
|
+
const getCrudData = async (type, authData, id, filter, returnEmptyDataIfNotFound, serviceClient) => {
|
|
5
7
|
return new Promise((resolve, reject) => {
|
|
6
|
-
serviceClient.
|
|
7
|
-
tenantId,
|
|
8
|
+
serviceClient.getEntry({
|
|
8
9
|
type,
|
|
10
|
+
auth: (0, auth_1.getProtobufAuthData)(authData),
|
|
11
|
+
filter: (0, filter_1.getProtobufEntryFilter)(filter),
|
|
9
12
|
id,
|
|
10
|
-
limit: 0,
|
|
11
|
-
page: 0,
|
|
12
13
|
returnEmptyDataIfNotFound,
|
|
13
|
-
filter: { fields: {}, and: [], or: [] },
|
|
14
|
-
order: [],
|
|
15
14
|
}, (error, response) => {
|
|
16
15
|
if (error) {
|
|
17
16
|
reject(error.message);
|
|
18
17
|
return;
|
|
19
18
|
}
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
const result = response.result;
|
|
20
|
+
if (!result) {
|
|
21
|
+
resolve(null);
|
|
22
|
+
return;
|
|
22
23
|
}
|
|
23
24
|
const data = {};
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
data[key] = JSON.parse(resultData[key]);
|
|
25
|
+
for (const key in result.data) {
|
|
26
|
+
data[key] = JSON.parse(result.data[key]);
|
|
27
27
|
}
|
|
28
28
|
resolve(data);
|
|
29
29
|
});
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
2
3
|
import { Filter } from "./filter";
|
|
3
4
|
import { Order } from "./order";
|
|
4
5
|
export interface GetCrudDataList<T extends {}> {
|
|
5
6
|
limit: number;
|
|
6
7
|
page: number;
|
|
8
|
+
total: number;
|
|
7
9
|
data: T[];
|
|
8
10
|
}
|
|
9
|
-
export declare const getCrudDataList: <T extends {}>(
|
|
11
|
+
export declare const getCrudDataList: <T extends {}>(type: string, authData: AuthData, limit: number, page: number, filter: Filter, order: Order[], serviceClient: DeliveryServiceClient) => Promise<GetCrudDataList<T>>;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCrudDataList = void 0;
|
|
4
|
+
const auth_1 = require("./auth");
|
|
4
5
|
const filter_1 = require("./filter");
|
|
5
6
|
const order_1 = require("./order");
|
|
6
|
-
const getCrudDataList = async (
|
|
7
|
+
const getCrudDataList = async (type, authData, limit, page, filter, order, serviceClient) => {
|
|
7
8
|
return new Promise((resolve, reject) => {
|
|
8
|
-
serviceClient.
|
|
9
|
-
tenantId,
|
|
9
|
+
serviceClient.getEntryList({
|
|
10
10
|
type,
|
|
11
|
-
|
|
11
|
+
auth: (0, auth_1.getProtobufAuthData)(authData),
|
|
12
12
|
limit,
|
|
13
13
|
page,
|
|
14
|
-
returnEmptyDataIfNotFound: false,
|
|
15
14
|
filter: (0, filter_1.getProtobufEntryFilter)(filter),
|
|
16
15
|
order: (0, order_1.getProtobufEntryOrder)(order),
|
|
17
16
|
}, (error, response) => {
|
|
@@ -31,6 +30,7 @@ const getCrudDataList = async (tenantId, type, limit, page, filter, order, servi
|
|
|
31
30
|
resolve({
|
|
32
31
|
limit: response.limit,
|
|
33
32
|
page: response.page,
|
|
33
|
+
total: response.total,
|
|
34
34
|
data,
|
|
35
35
|
});
|
|
36
36
|
});
|
|
@@ -1,2 +1,14 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
-
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { EventMetadata } from "./eventMetadata";
|
|
4
|
+
export type UpdateResponse<T extends {}> = UpdateSuccessResponse<T> | UpdateValidationResponse;
|
|
5
|
+
export interface UpdateSuccessResponse<T extends {}> {
|
|
6
|
+
data: T;
|
|
7
|
+
}
|
|
8
|
+
export interface UpdateValidationResponse {
|
|
9
|
+
validationErrors: string[];
|
|
10
|
+
fieldValidationErrors: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export declare const isUpdateSuccessResponse: <T extends {}>(response: UpdateResponse<T>) => response is UpdateSuccessResponse<T>;
|
|
13
|
+
export declare const isUpdateValidationResponse: <T extends {}>(response: UpdateResponse<T>) => response is UpdateValidationResponse;
|
|
14
|
+
export declare const updateCrudData: <T extends {}>(type: string, authData: AuthData, id: string, data: Record<string, any>, eventMetadata: EventMetadata, serviceClient: DeliveryServiceClient) => Promise<UpdateResponse<T>>;
|
package/dist/delivery/update.js
CHANGED
|
@@ -1,23 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updateCrudData = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.updateCrudData = exports.isUpdateValidationResponse = exports.isUpdateSuccessResponse = void 0;
|
|
4
|
+
const auth_1 = require("./auth");
|
|
5
|
+
const isUpdateSuccessResponse = (response) => {
|
|
6
|
+
return response.hasOwnProperty("data");
|
|
7
|
+
};
|
|
8
|
+
exports.isUpdateSuccessResponse = isUpdateSuccessResponse;
|
|
9
|
+
const isUpdateValidationResponse = (response) => {
|
|
10
|
+
return !response.hasOwnProperty("data");
|
|
11
|
+
};
|
|
12
|
+
exports.isUpdateValidationResponse = isUpdateValidationResponse;
|
|
13
|
+
const updateCrudData = async (type, authData, id, data, eventMetadata, serviceClient) => {
|
|
5
14
|
const requestData = {};
|
|
6
15
|
for (const key in data) {
|
|
7
16
|
requestData[key] = JSON.stringify(data[key]);
|
|
8
17
|
}
|
|
9
18
|
return new Promise((resolve, reject) => {
|
|
10
19
|
serviceClient.updateEntry({
|
|
11
|
-
tenantId,
|
|
12
20
|
type,
|
|
13
|
-
|
|
21
|
+
auth: (0, auth_1.getProtobufAuthData)(authData),
|
|
14
22
|
data: requestData,
|
|
15
|
-
|
|
23
|
+
id,
|
|
24
|
+
eventMetadata,
|
|
25
|
+
}, (error, response) => {
|
|
16
26
|
if (error) {
|
|
17
27
|
reject(error.message);
|
|
18
28
|
return;
|
|
19
29
|
}
|
|
20
|
-
|
|
30
|
+
if (response.validationErrors || response.fieldValidationErrors) {
|
|
31
|
+
resolve({
|
|
32
|
+
validationErrors: response.validationErrors,
|
|
33
|
+
fieldValidationErrors: response.fieldValidationErrors,
|
|
34
|
+
});
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const data = {};
|
|
38
|
+
for (const key in response.newData) {
|
|
39
|
+
data[key] = JSON.parse(response.newData[key]);
|
|
40
|
+
}
|
|
41
|
+
resolve({
|
|
42
|
+
data,
|
|
43
|
+
});
|
|
21
44
|
});
|
|
22
45
|
});
|
|
23
46
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.removeCrudTypes = void 0;
|
|
4
4
|
const removeCrudTypes = async (typeNames, config) => {
|
|
5
|
-
await fetch(`${config.serverAddress}/management/types`, {
|
|
5
|
+
const response = await fetch(`${config.serverAddress}/management/types`, {
|
|
6
6
|
method: "DELETE",
|
|
7
7
|
headers: {
|
|
8
8
|
Authorization: `Bearer ${config.apiToken}`,
|
|
@@ -12,5 +12,8 @@ const removeCrudTypes = async (typeNames, config) => {
|
|
|
12
12
|
typeNames,
|
|
13
13
|
}),
|
|
14
14
|
});
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(await response.text());
|
|
17
|
+
}
|
|
15
18
|
};
|
|
16
19
|
exports.removeCrudTypes = removeCrudTypes;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.upsertCrudTypes = void 0;
|
|
4
4
|
const upsertCrudTypes = async (schema, config) => {
|
|
5
|
-
await fetch(`${config.serverAddress}/management/types`, {
|
|
5
|
+
const response = await fetch(`${config.serverAddress}/management/types`, {
|
|
6
6
|
method: "POST",
|
|
7
7
|
headers: {
|
|
8
8
|
Authorization: `Bearer ${config.apiToken}`,
|
|
@@ -12,5 +12,8 @@ const upsertCrudTypes = async (schema, config) => {
|
|
|
12
12
|
schema,
|
|
13
13
|
}),
|
|
14
14
|
});
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(await response.text());
|
|
17
|
+
}
|
|
15
18
|
};
|
|
16
19
|
exports.upsertCrudTypes = upsertCrudTypes;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fraym/crud",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"homepage": "https://github.com/fraym/crud-nodejs",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"crud": "dist/cmd/crud.js"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@fraym/crud-proto": "1.0.0-alpha.
|
|
30
|
+
"@fraym/crud-proto": "1.0.0-alpha.14",
|
|
31
31
|
"@graphql-tools/graphql-file-loader": "^7.5.14",
|
|
32
32
|
"@graphql-tools/load": "^7.8.9",
|
|
33
33
|
"@grpc/grpc-js": "^1.8.7",
|