@svadmin/hasura 0.8.0 → 0.9.1
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 +2 -2
- package/src/data-provider.ts +15 -15
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svadmin/hasura",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Hasura GraphQL DataProvider for svadmin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@svadmin/core": "^0.
|
|
19
|
+
"@svadmin/core": "^0.19.3"
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"repository": {
|
package/src/data-provider.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
DataProvider, GetListParams, GetListResult, GetOneParams, GetOneResult,
|
|
3
3
|
CreateParams, CreateResult, UpdateParams, UpdateResult, DeleteParams, DeleteResult,
|
|
4
|
-
GetManyParams, GetManyResult, CustomParams, CustomResult, Sort, Filter
|
|
4
|
+
GetManyParams, GetManyResult, CustomParams, CustomResult, Sort, Filter, BaseRecord
|
|
5
5
|
} from '@svadmin/core';
|
|
6
6
|
|
|
7
7
|
// Maps core filter operators to Hasura GraphQL query operators
|
|
@@ -38,7 +38,7 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
38
38
|
return {
|
|
39
39
|
getApiUrl: () => endpoint,
|
|
40
40
|
|
|
41
|
-
async getList<T>({ resource, pagination, sorters, filters, meta }: GetListParams): Promise<GetListResult<T>> {
|
|
41
|
+
async getList<T extends BaseRecord = BaseRecord>({ resource, pagination, sorters, filters, meta }: GetListParams): Promise<GetListResult<T>> {
|
|
42
42
|
const { current = 1, pageSize = 10, mode } = pagination ?? {};
|
|
43
43
|
const offset = mode === 'server' ? (current - 1) * pageSize : 0;
|
|
44
44
|
const limit = mode === 'server' ? pageSize : undefined;
|
|
@@ -75,7 +75,7 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
75
75
|
`;
|
|
76
76
|
|
|
77
77
|
const data = await executeGraphQL(endpoint, query, variables, defaultHeaders);
|
|
78
|
-
const resourceData = data[resource] as T[] | undefined;
|
|
78
|
+
const resourceData = data[resource] as unknown as unknown as T[] | undefined;
|
|
79
79
|
const aggregateData = data[`${resource}_aggregate`] as { aggregate?: { count?: number } } | undefined;
|
|
80
80
|
return {
|
|
81
81
|
data: resourceData || [],
|
|
@@ -83,7 +83,7 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
83
83
|
};
|
|
84
84
|
},
|
|
85
85
|
|
|
86
|
-
async getOne<T>({ resource, id, meta }: GetOneParams): Promise<GetOneResult<T>> {
|
|
86
|
+
async getOne<T extends BaseRecord = BaseRecord>({ resource, id, meta }: GetOneParams): Promise<GetOneResult<T>> {
|
|
87
87
|
const fields = (meta?.fields as string[])?.join(' ') || 'id';
|
|
88
88
|
const query = `
|
|
89
89
|
query getOne($id: uuid!) {
|
|
@@ -93,10 +93,10 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
93
93
|
}
|
|
94
94
|
`;
|
|
95
95
|
const data = await executeGraphQL(endpoint, query, { id }, defaultHeaders);
|
|
96
|
-
return { data: data[`${resource}_by_pk`] as T };
|
|
96
|
+
return { data: data[`${resource}_by_pk`] as unknown as unknown as T };
|
|
97
97
|
},
|
|
98
98
|
|
|
99
|
-
async create<T>({ resource, variables, meta }: CreateParams): Promise<CreateResult<T>> {
|
|
99
|
+
async create<T extends BaseRecord = BaseRecord>({ resource, variables, meta }: CreateParams): Promise<CreateResult<T>> {
|
|
100
100
|
const fields = (meta?.fields as string[])?.join(' ') || 'id';
|
|
101
101
|
const query = `
|
|
102
102
|
mutation create($object: ${resource}_insert_input!) {
|
|
@@ -106,10 +106,10 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
106
106
|
}
|
|
107
107
|
`;
|
|
108
108
|
const data = await executeGraphQL(endpoint, query, { object: variables }, defaultHeaders);
|
|
109
|
-
return { data: data[`insert_${resource}_one`] as T };
|
|
109
|
+
return { data: data[`insert_${resource}_one`] as unknown as unknown as T };
|
|
110
110
|
},
|
|
111
111
|
|
|
112
|
-
async update<T>({ resource, id, variables, meta }: UpdateParams): Promise<UpdateResult<T>> {
|
|
112
|
+
async update<T extends BaseRecord = BaseRecord>({ resource, id, variables, meta }: UpdateParams): Promise<UpdateResult<T>> {
|
|
113
113
|
const fields = (meta?.fields as string[])?.join(' ') || 'id';
|
|
114
114
|
const query = `
|
|
115
115
|
mutation update($id: uuid!, $set: ${resource}_set_input!) {
|
|
@@ -119,10 +119,10 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
119
119
|
}
|
|
120
120
|
`;
|
|
121
121
|
const data = await executeGraphQL(endpoint, query, { id, set: variables }, defaultHeaders);
|
|
122
|
-
return { data: data[`update_${resource}_by_pk`] as T };
|
|
122
|
+
return { data: data[`update_${resource}_by_pk`] as unknown as unknown as T };
|
|
123
123
|
},
|
|
124
124
|
|
|
125
|
-
async deleteOne<T>({ resource, id, meta }: DeleteParams): Promise<DeleteResult<T>> {
|
|
125
|
+
async deleteOne<T extends BaseRecord = BaseRecord>({ resource, id, meta }: DeleteParams): Promise<DeleteResult<T>> {
|
|
126
126
|
const fields = (meta?.fields as string[])?.join(' ') || 'id';
|
|
127
127
|
const query = `
|
|
128
128
|
mutation deleteOne($id: uuid!) {
|
|
@@ -132,10 +132,10 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
132
132
|
}
|
|
133
133
|
`;
|
|
134
134
|
const data = await executeGraphQL(endpoint, query, { id }, defaultHeaders);
|
|
135
|
-
return { data: data[`delete_${resource}_by_pk`] as T };
|
|
135
|
+
return { data: data[`delete_${resource}_by_pk`] as unknown as unknown as T };
|
|
136
136
|
},
|
|
137
137
|
|
|
138
|
-
async getMany<T>({ resource, ids, meta }: GetManyParams): Promise<GetManyResult<T>> {
|
|
138
|
+
async getMany<T extends BaseRecord = BaseRecord>({ resource, ids, meta }: GetManyParams): Promise<GetManyResult<T>> {
|
|
139
139
|
const fields = (meta?.fields as string[])?.join(' ') || 'id';
|
|
140
140
|
const query = `
|
|
141
141
|
query getMany($ids: [uuid!]!) {
|
|
@@ -145,10 +145,10 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
145
145
|
}
|
|
146
146
|
`;
|
|
147
147
|
const data = await executeGraphQL(endpoint, query, { ids }, defaultHeaders);
|
|
148
|
-
return { data: (data[resource] as T[]) || [] };
|
|
148
|
+
return { data: (data[resource] as unknown as unknown as T[]) || [] };
|
|
149
149
|
},
|
|
150
150
|
|
|
151
|
-
async custom<T>({ url, method, payload, headers }: CustomParams): Promise<CustomResult<T>> {
|
|
151
|
+
async custom<T = unknown>({ url, method, payload, headers }: CustomParams): Promise<CustomResult<T>> {
|
|
152
152
|
// By default Hasura only understands GraphQL via POST, but arbitrary custom calls might be used for REST endpoints mapping.
|
|
153
153
|
const response = await fetch(url, {
|
|
154
154
|
method: method.toUpperCase(),
|
|
@@ -157,7 +157,7 @@ export function createHasuraDataProvider(endpoint: string, defaultHeaders: Recor
|
|
|
157
157
|
});
|
|
158
158
|
if (!response.ok) throw new Error(`Custom request failed: ${response.status}`);
|
|
159
159
|
const data = await response.json();
|
|
160
|
-
return { data: data as T };
|
|
160
|
+
return { data: data as unknown as unknown as T };
|
|
161
161
|
},
|
|
162
162
|
};
|
|
163
163
|
}
|