import pg from "../postgres.js"; import { silencedMock } from "../mocks/alerting-mock.js"; import moment from "moment"; // Imports import { insertQuery, selectWhereAnyQuery, updateWhereAnyQuery, deleteQuery, } from "../pg-query.js"; // Constants const table = "alerting"; const PG_DISABLED = process.env.POSTGRES_DISABLED; export const upsertAlertSilence = async (silence) => { const { id, name, class: className, method, expires: duration, keepExpires, } = silence; const { h, m } = duration; const expires = moment().add(h, "hours").add(m, "minutes").utc().format(); const entry = { name, class: className, method, expires: keepExpires ? undefined : expires, }; const asUpdate = {}; for (var k of Object.keys(entry)) asUpdate[k] = entry[k] === "*" ? null : entry[k]; var query = id ? updateWhereAnyQuery(table, asUpdate, { id }) : insertQuery(table, entry); return pg.query(query); }; export const deleteAlertSilence = async (silence) => { const { id } = silence; const query = deleteQuery(table, { id }); return pg.query(query); }; // Queries export const getSilencedTests = async () => { if (PG_DISABLED) return silencedMock(); const query = `SELECT * from ${table}`; const silenced = await pg.query(query); silenced.forEach((t, i) => { for (var k of Object.keys(t)) silenced[i][k] = t[k] === null ? "*" : t[k]; }); return silenced; };