forked from tsai/budibase
9 changed files with 149 additions and 13 deletions
@ -0,0 +1,67 @@ |
|||||
|
import { AutomationResults } from "../../definitions/automation" |
||||
|
import { getAppDB } from "@budibase/backend-core/context" |
||||
|
import { |
||||
|
generateAutomationLogID, |
||||
|
getAutomationLogParams, |
||||
|
// getQueryIndex,
|
||||
|
// ViewNames,
|
||||
|
} from "../../db/utils" |
||||
|
// import { createLogByAutomationView } from "../../db/views/staticViews"
|
||||
|
|
||||
|
const FREE_EXPIRY_SEC = 86400 |
||||
|
// const PRO_EXPIRY_SEC = FREE_EXPIRY_SEC * 30
|
||||
|
|
||||
|
async function clearOldHistory() { |
||||
|
const db = getAppDB() |
||||
|
// TODO: handle license lookup for deletion
|
||||
|
const time = new Date(new Date().getTime() - FREE_EXPIRY_SEC * 1000) |
||||
|
const queryParams: any = { |
||||
|
endIso: time, |
||||
|
} |
||||
|
const results = await db.allDocs(getAutomationLogParams(queryParams)) |
||||
|
const toDelete = results.map((doc: any) => ({ |
||||
|
_id: doc.id, |
||||
|
_rev: doc.rev, |
||||
|
_deleted: true, |
||||
|
})) |
||||
|
await db.bulkDocs(toDelete) |
||||
|
} |
||||
|
|
||||
|
// async function getByAutomationID(automationId: string) {
|
||||
|
// const db = getAppDB()
|
||||
|
// try {
|
||||
|
// const queryParams: any = {
|
||||
|
// automationId,
|
||||
|
// }
|
||||
|
// return (
|
||||
|
// await db.query(
|
||||
|
// getQueryIndex(ViewNames.LOGS_BY_AUTOMATION),
|
||||
|
// getAutomationLogParams(queryParams, { include_docs: true })
|
||||
|
// )
|
||||
|
// ).rows.map((row: any) => row.doc)
|
||||
|
// } catch (err: any) {
|
||||
|
// if (err != null && err.name === "not_found") {
|
||||
|
// await createLogByAutomationView()
|
||||
|
// return getByAutomationID(automationId)
|
||||
|
// }
|
||||
|
// }
|
||||
|
// }
|
||||
|
|
||||
|
export async function storeHistory( |
||||
|
automationId: string, |
||||
|
results: AutomationResults |
||||
|
) { |
||||
|
const db = getAppDB() |
||||
|
const isoDate = new Date().toISOString() |
||||
|
const id = generateAutomationLogID(isoDate, automationId) |
||||
|
await db.put({ |
||||
|
// results contain automationId and status for view
|
||||
|
...results, |
||||
|
createdAt: isoDate, |
||||
|
_id: id, |
||||
|
}) |
||||
|
// clear up old history for app
|
||||
|
await clearOldHistory() |
||||
|
} |
||||
|
|
||||
|
export async function retrieve() {} |
||||
@ -0,0 +1,13 @@ |
|||||
|
export interface AutomationResults { |
||||
|
automationId: string |
||||
|
status: string |
||||
|
steps: { |
||||
|
stepId: string |
||||
|
inputs: { |
||||
|
[key: string]: any |
||||
|
} |
||||
|
outputs: { |
||||
|
[key: string]: any |
||||
|
} |
||||
|
}[] |
||||
|
} |
||||
Loading…
Reference in new issue