36 lines
893 B
TypeScript
36 lines
893 B
TypeScript
import { ODataQuery, ODataQuerySchema } from "../types/odata";
|
|
|
|
export function buildODataParams(query: ODataQuery = {}): Record<string, string | number> {
|
|
const parsed = ODataQuerySchema.parse(query);
|
|
const params: Record<string, string | number> = {};
|
|
|
|
if (parsed.select?.length) {
|
|
params.$select = parsed.select.join(",");
|
|
}
|
|
|
|
if (parsed.filter) {
|
|
params.$filter = parsed.filter;
|
|
}
|
|
|
|
if (parsed.top !== undefined) {
|
|
params.$top = parsed.top;
|
|
}
|
|
|
|
if (parsed.skip !== undefined) {
|
|
params.$skip = parsed.skip;
|
|
}
|
|
|
|
if (parsed.orderby) {
|
|
params.$orderby = Array.isArray(parsed.orderby) ? parsed.orderby.join(",") : parsed.orderby;
|
|
}
|
|
|
|
return params;
|
|
}
|
|
|
|
export function extractNextLink<T>(response: {
|
|
"odata.nextLink"?: string;
|
|
"@odata.nextLink"?: string;
|
|
}): string | undefined {
|
|
return response["@odata.nextLink"] || response["odata.nextLink"];
|
|
}
|