From 9fd64307a99d3a4d8ef021576fbad86de0081ea8 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 24 Jun 2022 18:11:19 +0100 Subject: [PATCH] Adding in management of time range to lookup automation logs in. --- .../portal/overview/HistoryTab.svelte | 21 ++++++++++++------- .../server/src/api/controllers/automation.js | 11 +++++----- .../server/src/automations/logging/index.ts | 10 ++++----- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/builder/src/components/portal/overview/HistoryTab.svelte b/packages/builder/src/components/portal/overview/HistoryTab.svelte index 51a55dca88..f77fc0d055 100644 --- a/packages/builder/src/components/portal/overview/HistoryTab.svelte +++ b/packages/builder/src/components/portal/overview/HistoryTab.svelte @@ -5,6 +5,7 @@ import HistoryDetailsPanel from "./HistoryDetailsPanel.svelte" import { automationStore } from "builderStore" import { onMount } from "svelte" + import dayjs from "dayjs" const ERROR = "error", SUCCESS = "success" @@ -23,14 +24,14 @@ hasNextPage, pageNumber = 1 - $: fetchLogs(automationId, status, page) + $: fetchLogs(automationId, status, page, timeRange) const timeOptions = [ - { value: "1w", label: "Past week" }, - { value: "1d", label: "Past day" }, - { value: "1h", label: "Past 1 hour" }, - { value: "15m", label: "Past 15 mins" }, - { value: "5m", label: "Past 5 mins" }, + { value: "1-w", label: "Past week" }, + { value: "1-d", label: "Past day" }, + { value: "1-h", label: "Past 1 hour" }, + { value: "15-m", label: "Past 15 mins" }, + { value: "5-m", label: "Past 5 mins" }, ] const statusOptions = [ @@ -49,11 +50,17 @@ { column: "status", component: StatusRenderer }, ] - async function fetchLogs(automationId, status, page) { + async function fetchLogs(automationId, status, page, timeRange) { + let startDate = null + if (timeRange) { + const [length, units] = timeRange.split("-") + startDate = dayjs().subtract(length, units) + } const response = await automationStore.actions.getLogs({ automationId, status, page, + startDate, }) nextPage = response.nextPage hasNextPage = response.hasNextPage diff --git a/packages/server/src/api/controllers/automation.js b/packages/server/src/api/controllers/automation.js index 4224ff5b5b..b0d33d2352 100644 --- a/packages/server/src/api/controllers/automation.js +++ b/packages/server/src/api/controllers/automation.js @@ -1,6 +1,6 @@ const actions = require("../../automations/actions") const triggers = require("../../automations/triggers") -const { getLogs, oneDayAgo } = require("../../automations/logging") +const { getLogs, oneMonthAgo } = require("../../automations/logging") const { getAutomationParams, generateAutomationID, @@ -194,10 +194,11 @@ exports.destroy = async function (ctx) { } exports.logSearch = async function (ctx) { - const { automationId, status, page } = ctx.request.body - // TODO: check if there is a date range in the search params - // also check the date range vs their license, see if it is allowed - const startDate = oneDayAgo() + let { automationId, status, page, startDate } = ctx.request.body + // TODO: need to check maximum allowed in license + if (!startDate) { + startDate = oneMonthAgo() + } ctx.body = await getLogs(startDate, status, automationId, page) } diff --git a/packages/server/src/automations/logging/index.ts b/packages/server/src/automations/logging/index.ts index e6b851675f..a61bf31eb3 100644 --- a/packages/server/src/automations/logging/index.ts +++ b/packages/server/src/automations/logging/index.ts @@ -22,7 +22,7 @@ import * as env from "../../environment" const PAGE_SIZE = 9 const EARLIEST_DATE = new Date(0).toISOString() const FREE_EXPIRY_SEC = 86400 -// const PRO_EXPIRY_SEC = FREE_EXPIRY_SEC * 30 +const PRO_EXPIRY_SEC = FREE_EXPIRY_SEC * 30 function getStatus(results: AutomationResults) { let status = AutomationStatus.SUCCESS @@ -40,11 +40,9 @@ function getStatus(results: AutomationResults) { return status } -// export function oneMonthAgo() { -// return new Date( -// new Date().getTime() - PRO_EXPIRY_SEC * 1000 -// ).toISOString() -// } +export function oneMonthAgo() { + return new Date(new Date().getTime() - PRO_EXPIRY_SEC * 1000).toISOString() +} export function oneDayAgo() { return new Date(new Date().getTime() - FREE_EXPIRY_SEC * 1000).toISOString()