Skip to content

Commit cfa02ad

Browse files
committed
Add support for embed in all getters
1 parent 17fe861 commit cfa02ad

File tree

1 file changed

+25
-8
lines changed
  • packages/ra-data-simple-rest/src

1 file changed

+25
-8
lines changed

packages/ra-data-simple-rest/src/index.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,26 @@ export default (
9090
});
9191
},
9292

93-
getOne: (resource, params) =>
94-
httpClient(`${apiUrl}/${resource}/${encodeURIComponent(params.id)}`, {
95-
signal: params?.signal,
96-
}).then(({ json }) => ({
97-
data: json,
98-
})),
93+
getOne: async (resource, params) => {
94+
let query: string = '';
95+
if (params.meta && params.meta.embed) {
96+
query =
97+
'?' + stringify({ embed: JSON.stringify(params.meta.embed) });
98+
}
99+
const { json } = await httpClient(
100+
`${apiUrl}/${resource}/${encodeURIComponent(params.id)}${query}`,
101+
{ signal: params?.signal }
102+
);
103+
return { data: json };
104+
},
99105

100106
getMany: (resource, params) => {
101-
const query = {
107+
const query: { filter: string; embed?: string } = {
102108
filter: JSON.stringify({ id: params.ids }),
103109
};
110+
if (params.meta && params.meta.embed) {
111+
query.embed = JSON.stringify(params.meta.embed);
112+
}
104113
const url = `${apiUrl}/${resource}?${stringify(query)}`;
105114
return httpClient(url, { signal: params?.signal }).then(({ json }) => ({
106115
data: json,
@@ -114,14 +123,22 @@ export default (
114123
const rangeStart = (page - 1) * perPage;
115124
const rangeEnd = page * perPage - 1;
116125

117-
const query = {
126+
const query: {
127+
sort: string;
128+
range: string;
129+
filter: string;
130+
embed?: string;
131+
} = {
118132
sort: JSON.stringify([field, order]),
119133
range: JSON.stringify([(page - 1) * perPage, page * perPage - 1]),
120134
filter: JSON.stringify({
121135
...params.filter,
122136
[params.target]: params.id,
123137
}),
124138
};
139+
if (params.meta && params.meta.embed) {
140+
query.embed = JSON.stringify(params.meta.embed);
141+
}
125142
const url = `${apiUrl}/${resource}?${stringify(query)}`;
126143
const options =
127144
countHeader === 'Content-Range'

0 commit comments

Comments
 (0)