@fraym/crud 0.12.0 → 0.13.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 +36 -2
- package/dist/delivery/client.d.ts +5 -3
- package/dist/delivery/client.js +4 -4
- package/dist/delivery/delete.d.ts +2 -1
- package/dist/delivery/delete.js +4 -2
- package/dist/delivery/filter.d.ts +12 -0
- package/dist/delivery/filter.js +27 -0
- package/dist/delivery/getData.js +1 -0
- package/dist/delivery/getDataList.d.ts +3 -11
- package/dist/delivery/getDataList.js +5 -25
- package/dist/delivery/order.d.ts +6 -0
- package/dist/delivery/order.js +13 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -106,12 +106,33 @@ await client.update("tenantId", "YourCrudType", "id", {
|
|
|
106
106
|
### Delete data
|
|
107
107
|
|
|
108
108
|
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
109
|
-
|
|
109
|
+
|
|
110
|
+
Delete all data of a type:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
await client.delete("tenantId", "YourCrudType");
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Delete data matching a specific ID:
|
|
110
117
|
|
|
111
118
|
```typescript
|
|
112
119
|
await client.delete("tenantId", "YourCrudType", "id");
|
|
113
120
|
```
|
|
114
121
|
|
|
122
|
+
Delete data matching a filter (see filter parameter for `getDataList` for details):
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
await client.delete("tenantId", "YourCrudType", undefined, {
|
|
126
|
+
fields: {
|
|
127
|
+
fieldName: {
|
|
128
|
+
operation: "equals",
|
|
129
|
+
type: "Int",
|
|
130
|
+
value: 123,
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
115
136
|
### Get a single data element
|
|
116
137
|
|
|
117
138
|
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
@@ -127,7 +148,7 @@ You can specify a fourth parameter if you want to return a empty dataset instead
|
|
|
127
148
|
const data = await client.getData("tenantId", "YourCrudType", "id", true);
|
|
128
149
|
```
|
|
129
150
|
|
|
130
|
-
### Get (paginated / filtered) data
|
|
151
|
+
### Get (paginated / filtered / ordered) data
|
|
131
152
|
|
|
132
153
|
The name of `YourCrudType` has to equal your type name in your schema (also in casing).
|
|
133
154
|
|
|
@@ -198,6 +219,19 @@ Avaliable options for the filter type `Int` and `Float`:
|
|
|
198
219
|
- `lessThanOrEqual`
|
|
199
220
|
- `greaterThanOrEqual`
|
|
200
221
|
|
|
222
|
+
With order:
|
|
223
|
+
|
|
224
|
+
All order definitions are prioritized in the order that they are defined (the first definition is prioritized over the second).
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
const data = await client.getDataList("tenantId", "YourCrudType", undefined, undefined, undefined, [
|
|
228
|
+
{
|
|
229
|
+
field: "fieldName",
|
|
230
|
+
descending: true, // omit this value for asc order
|
|
231
|
+
},
|
|
232
|
+
]);
|
|
233
|
+
```
|
|
234
|
+
|
|
201
235
|
### Gracefully close the clients
|
|
202
236
|
|
|
203
237
|
You won't lose any data if you don't. Use it for your peace of mind.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { ClientConfig } from "../config/config";
|
|
2
2
|
import { CreatedCrudData } from "./create";
|
|
3
|
-
import {
|
|
3
|
+
import { GetCrudDataList } from "./getDataList";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
import { Order } from "./order";
|
|
4
6
|
export interface DeliveryClient {
|
|
5
7
|
create: (tenantId: string, type: string, data: Record<string, any>, id?: string) => Promise<CreatedCrudData>;
|
|
6
8
|
update: (tenantId: string, type: string, id: string, data: Record<string, any>) => Promise<void>;
|
|
7
|
-
delete: (tenantId: string, type: string, id
|
|
9
|
+
delete: (tenantId: string, type: string, id?: string, filter?: Filter) => Promise<void>;
|
|
8
10
|
getData: <T extends {}>(tenantId: string, type: string, id: string, returnEmptyDataIfNotFound?: boolean) => Promise<T>;
|
|
9
|
-
getDataList: <T extends {}>(tenantId: string, type: string, limit?: number, page?: number, filter?: Filter) => Promise<GetCrudDataList<T>>;
|
|
11
|
+
getDataList: <T extends {}>(tenantId: string, type: string, limit?: number, page?: number, filter?: Filter, order?: Order[]) => Promise<GetCrudDataList<T>>;
|
|
10
12
|
close: () => Promise<void>;
|
|
11
13
|
}
|
|
12
14
|
export declare const newDeliveryClient: (config?: ClientConfig) => Promise<DeliveryClient>;
|
package/dist/delivery/client.js
CHANGED
|
@@ -22,14 +22,14 @@ const newDeliveryClient = async (config) => {
|
|
|
22
22
|
const update = async (tenantId, type, id, data) => {
|
|
23
23
|
return await (0, update_1.updateCrudData)(tenantId, type, id, data, serviceClient);
|
|
24
24
|
};
|
|
25
|
-
const deleter = async (tenantId, type, id) => {
|
|
26
|
-
return await (0, delete_1.deleteCrudData)(tenantId, type, id, serviceClient);
|
|
25
|
+
const deleter = async (tenantId, type, id = "", filter = { fields: {}, and: [], or: [] }) => {
|
|
26
|
+
return await (0, delete_1.deleteCrudData)(tenantId, type, id, filter, serviceClient);
|
|
27
27
|
};
|
|
28
28
|
const getData = async (tenantId, type, id, returnEmptyDataIfNotFound = false) => {
|
|
29
29
|
return await (0, getData_1.getCrudData)(tenantId, type, id, returnEmptyDataIfNotFound, serviceClient);
|
|
30
30
|
};
|
|
31
|
-
const getDataList = async (tenantId, type, limit = 0, page = 1, filter = { fields: {}, and: [], or: [] }) => {
|
|
32
|
-
return await (0, getDataList_1.getCrudDataList)(tenantId, type, limit, page, filter, serviceClient);
|
|
31
|
+
const getDataList = async (tenantId, type, limit = 0, page = 1, filter = { fields: {}, and: [], or: [] }, order = []) => {
|
|
32
|
+
return await (0, getDataList_1.getCrudDataList)(tenantId, type, limit, page, filter, order, serviceClient);
|
|
33
33
|
};
|
|
34
34
|
const close = async () => {
|
|
35
35
|
serviceClient.close();
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
-
|
|
2
|
+
import { Filter } from "./filter";
|
|
3
|
+
export declare const deleteCrudData: (tenantId: string, type: string, id: string, filter: Filter, serviceClient: DeliveryServiceClient) => Promise<void>;
|
package/dist/delivery/delete.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deleteCrudData = void 0;
|
|
4
|
-
const
|
|
4
|
+
const filter_1 = require("./filter");
|
|
5
|
+
const deleteCrudData = async (tenantId, type, id, filter, serviceClient) => {
|
|
5
6
|
return new Promise((resolve, reject) => {
|
|
6
|
-
serviceClient.
|
|
7
|
+
serviceClient.deleteEntries({
|
|
7
8
|
tenantId,
|
|
8
9
|
type,
|
|
9
10
|
id,
|
|
11
|
+
filter: (0, filter_1.getProtobufEntryFilter)(filter),
|
|
10
12
|
}, error => {
|
|
11
13
|
if (error) {
|
|
12
14
|
reject(error.message);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EntryFilter } from "@fraym/crud-proto";
|
|
2
|
+
export interface Filter {
|
|
3
|
+
fields: Record<string, FieldFilter>;
|
|
4
|
+
and?: Filter[];
|
|
5
|
+
or?: Filter[];
|
|
6
|
+
}
|
|
7
|
+
export interface FieldFilter {
|
|
8
|
+
type: string;
|
|
9
|
+
operation: string;
|
|
10
|
+
value: any;
|
|
11
|
+
}
|
|
12
|
+
export declare const getProtobufEntryFilter: (filter: Filter) => EntryFilter;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProtobufEntryFilter = void 0;
|
|
4
|
+
const getProtobufEntryFilter = (filter) => {
|
|
5
|
+
const fields = {};
|
|
6
|
+
for (const fieldName in filter.fields) {
|
|
7
|
+
const field = filter.fields[fieldName];
|
|
8
|
+
let value = "";
|
|
9
|
+
if (field.type === "String" && typeof field.value == "string") {
|
|
10
|
+
value = field.value;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
value = JSON.stringify(field.value);
|
|
14
|
+
}
|
|
15
|
+
fields[fieldName] = {
|
|
16
|
+
operation: field.operation,
|
|
17
|
+
type: field.type,
|
|
18
|
+
value,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
fields: fields,
|
|
23
|
+
and: filter.and ? filter.and.map(and => (0, exports.getProtobufEntryFilter)(and)) : [],
|
|
24
|
+
or: filter.or ? filter.or.map(or => (0, exports.getProtobufEntryFilter)(or)) : [],
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
exports.getProtobufEntryFilter = getProtobufEntryFilter;
|
package/dist/delivery/getData.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import { DeliveryServiceClient } from "@fraym/crud-proto";
|
|
2
|
+
import { Filter } from "./filter";
|
|
3
|
+
import { Order } from "./order";
|
|
2
4
|
export interface GetCrudDataList<T extends {}> {
|
|
3
5
|
limit: number;
|
|
4
6
|
page: number;
|
|
5
7
|
data: T[];
|
|
6
8
|
}
|
|
7
|
-
export
|
|
8
|
-
fields: Record<string, FieldFilter>;
|
|
9
|
-
and?: Filter[];
|
|
10
|
-
or?: Filter[];
|
|
11
|
-
}
|
|
12
|
-
export interface FieldFilter {
|
|
13
|
-
type: string;
|
|
14
|
-
operation: string;
|
|
15
|
-
value: any;
|
|
16
|
-
}
|
|
17
|
-
export declare const getCrudDataList: <T extends {}>(tenantId: string, type: string, limit: number, page: number, filter: Filter, serviceClient: DeliveryServiceClient) => Promise<GetCrudDataList<T>>;
|
|
9
|
+
export declare const getCrudDataList: <T extends {}>(tenantId: string, type: string, limit: number, page: number, filter: Filter, order: Order[], serviceClient: DeliveryServiceClient) => Promise<GetCrudDataList<T>>;
|
|
@@ -1,30 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCrudDataList = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const field = filter.fields[fieldName];
|
|
8
|
-
let value = "";
|
|
9
|
-
if (field.type === "String" && typeof field.value == "string") {
|
|
10
|
-
value = field.value;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
value = JSON.stringify(field.value);
|
|
14
|
-
}
|
|
15
|
-
fields[fieldName] = {
|
|
16
|
-
operation: field.operation,
|
|
17
|
-
type: field.type,
|
|
18
|
-
value,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
fields: fields,
|
|
23
|
-
and: filter.and ? filter.and.map(and => getProtobufEntryFilter(and)) : [],
|
|
24
|
-
or: filter.or ? filter.or.map(or => getProtobufEntryFilter(or)) : [],
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
const getCrudDataList = async (tenantId, type, limit, page, filter, serviceClient) => {
|
|
4
|
+
const filter_1 = require("./filter");
|
|
5
|
+
const order_1 = require("./order");
|
|
6
|
+
const getCrudDataList = async (tenantId, type, limit, page, filter, order, serviceClient) => {
|
|
28
7
|
return new Promise((resolve, reject) => {
|
|
29
8
|
serviceClient.getEntries({
|
|
30
9
|
tenantId,
|
|
@@ -33,7 +12,8 @@ const getCrudDataList = async (tenantId, type, limit, page, filter, serviceClien
|
|
|
33
12
|
limit,
|
|
34
13
|
page,
|
|
35
14
|
returnEmptyDataIfNotFound: false,
|
|
36
|
-
filter: getProtobufEntryFilter(filter),
|
|
15
|
+
filter: (0, filter_1.getProtobufEntryFilter)(filter),
|
|
16
|
+
order: (0, order_1.getProtobufEntryOrder)(order),
|
|
37
17
|
}, (error, response) => {
|
|
38
18
|
if (error) {
|
|
39
19
|
reject(error.message);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProtobufEntryOrder = void 0;
|
|
4
|
+
const getProtobufEntryOrder = (order) => {
|
|
5
|
+
return order.map(o => {
|
|
6
|
+
var _a;
|
|
7
|
+
return ({
|
|
8
|
+
field: o.field,
|
|
9
|
+
descending: (_a = o.descending) !== null && _a !== void 0 ? _a : false,
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
exports.getProtobufEntryOrder = getProtobufEntryOrder;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fraym/crud",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.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.12",
|
|
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",
|