Add server-side code for loading sources and total count

This commit is contained in:
luke-hagar-sp
2024-01-23 13:17:03 -06:00
parent 02029af1c6
commit bf1f0a0399

View File

@@ -0,0 +1,49 @@
import { getFilters, getLimit, getSorters, getPage } from '$lib/Utils.js';
import { createConfiguration } from '$lib/sailpoint/sdk.js';
import { getToken } from '$lib/utils/oauth.js';
import { SourcesApi, type Source, type SourcesApiListSourcesRequest } from 'sailpoint-api-client';
export const load = async ({ cookies, url }) => {
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const api = new SourcesApi(config);
const page = getPage(url);
const filters = getFilters(url);
const limit = getLimit(url);
const sorters = getSorters(url);
const requestParams: SourcesApiListSourcesRequest = {
filters,
offset: Number(page) * Number(limit),
limit: Number(limit),
sorters,
count: true
};
const apiResponse = api.listSources(requestParams);
const sources = new Promise((resolve) => {
apiResponse
.then((response) => {
resolve(response.data as Source[]);
})
.catch((err) => {
throw err;
});
});
const totalCount = new Promise<number>((resolve) => {
apiResponse
.then((response) => {
resolve(response.headers['x-total-count']);
})
.catch((err) => {
throw err;
});
});
return { sources, totalCount, params: { page, limit, filters, sorters } };
};