[WIFI-11875] Custom timeframes for commands/deviceslogs/commands now work for large datasets

Signed-off-by: Charles <charles.bourque96@gmail.com>
This commit is contained in:
Charles
2022-12-12 10:54:42 -05:00
parent aaab9d3bc5
commit 35e7e26d67
5 changed files with 71 additions and 11 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "ucentral-client",
"version": "2.8.0(39)",
"version": "2.8.0(40)",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ucentral-client",
"version": "2.8.0(39)",
"version": "2.8.0(40)",
"license": "ISC",
"dependencies": {
"@chakra-ui/icons": "^2.0.11",

View File

@@ -1,6 +1,6 @@
{
"name": "ucentral-client",
"version": "2.8.0(39)",
"version": "2.8.0(40)",
"description": "",
"private": true,
"main": "index.tsx",

View File

@@ -57,12 +57,31 @@ export const useGetCommandHistory = ({
onError,
});
const getCommandsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () =>
const getCommandsBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) =>
axiosGw
.get(`commands?serialNumber=${serialNumber}&startDate=${start}&endDate=${end}`)
.get(`commands?serialNumber=${serialNumber}&startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`)
.then((response) => response.data) as Promise<{
commands: DeviceCommandHistory[];
}>;
const getCommandsByBatches = (serialNumber?: string, start?: number, end?: number) => async () => {
let offset = 0;
const limit = 100;
let commands: DeviceCommandHistory[] = [];
let latestResponse: {
commands: DeviceCommandHistory[];
};
do {
// eslint-disable-next-line no-await-in-loop
latestResponse = await getCommandsBatch(serialNumber, start, end, limit, offset);
commands = commands.concat(latestResponse.commands);
offset += limit;
} while (latestResponse.commands.length === limit);
return {
commands,
};
};
export const useGetCommandHistoryWithTimestamps = ({
serialNumber,
start,
@@ -74,7 +93,7 @@ export const useGetCommandHistoryWithTimestamps = ({
end?: number;
onError?: (e: AxiosError) => void;
}) =>
useQuery(['commands', serialNumber, { start, end }], getCommandsWithTimestamps(serialNumber, start, end), {
useQuery(['commands', serialNumber, { start, end }], getCommandsByBatches(serialNumber, start, end), {
enabled: serialNumber !== undefined && serialNumber !== '' && start !== undefined && end !== undefined,
staleTime: 1000 * 60,
onError,

View File

@@ -45,13 +45,33 @@ export const useDeleteLogs = () => {
});
};
const getDeviceLogsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () =>
const getLogsBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) =>
axiosGw
.get(`device/${serialNumber}/logs?startDate=${start}&endDate=${end}`)
.get(`device/${serialNumber}/logs?startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`)
.then((response) => response.data) as Promise<{
values: DeviceLog[];
serialNumber: string;
}>;
const getDeviceLogsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () => {
let offset = 0;
const limit = 100;
let logs: DeviceLog[] = [];
let latestResponse: {
values: DeviceLog[];
serialNumber: string;
};
do {
// eslint-disable-next-line no-await-in-loop
latestResponse = await getLogsBatch(serialNumber, start, end, limit, offset);
logs = logs.concat(latestResponse.values);
offset += limit;
} while (latestResponse.values.length === limit);
return {
values: logs,
};
};
export const useGetDeviceLogsWithTimestamps = ({
serialNumber,
start,

View File

@@ -33,13 +33,34 @@ export const useGetHealthChecks = ({
onError,
});
const getHealthChecksWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () =>
const getHealthChecksBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) =>
axiosGw
.get(`device/${serialNumber}/healthchecks?startDate=${start}&endDate=${end}`)
.get(`device/${serialNumber}/healthchecks?startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`)
.then((response) => response.data) as Promise<{
values: HealthCheck[];
serialNumber: string;
}>;
const getHealthChecksByBatches = (serialNumber?: string, start?: number, end?: number) => async () => {
let offset = 0;
const limit = 100;
let checks: HealthCheck[] = [];
let latestResponse: {
values: HealthCheck[];
serialNumber: string;
};
do {
// eslint-disable-next-line no-await-in-loop
latestResponse = await getHealthChecksBatch(serialNumber, start, end, limit, offset);
checks = checks.concat(latestResponse.values);
offset += limit;
} while (latestResponse.values.length === limit);
return {
values: checks,
serialNumber: latestResponse.serialNumber,
};
};
export const useGetHealthChecksWithTimestamps = ({
serialNumber,
start,
@@ -51,7 +72,7 @@ export const useGetHealthChecksWithTimestamps = ({
end?: number;
onError?: (e: AxiosError) => void;
}) =>
useQuery(['healthchecks', serialNumber, { start, end }], getHealthChecksWithTimestamps(serialNumber, start, end), {
useQuery(['healthchecks', serialNumber, { start, end }], getHealthChecksByBatches(serialNumber, start, end), {
enabled: serialNumber !== undefined && serialNumber !== '' && start !== undefined && end !== undefined,
staleTime: 1000 * 60,
onError,