qualiteer/lib/database/queries/alerting.js

57 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-05-08 01:36:22 +00:00
import pg from "../postgres.js";
2022-08-21 20:58:51 +00:00
import { silencedMock } from "../mocks/alerting-mock.js";
2022-10-08 17:47:46 +00:00
import moment from "moment";
2022-05-08 01:36:22 +00:00
// Imports
import {
insertQuery,
selectWhereAnyQuery,
updateWhereAnyQuery,
2022-10-08 17:47:46 +00:00
deleteQuery,
2022-05-08 01:36:22 +00:00
} from "../pg-query.js";
// Constants
2022-10-08 17:47:46 +00:00
const table = "alerting";
2022-08-06 21:21:41 +00:00
const PG_DISABLED = process.env.POSTGRES_DISABLED;
2022-10-08 17:47:46 +00:00
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);
};
2022-05-08 01:36:22 +00:00
// Queries
2022-08-06 21:21:41 +00:00
export const getSilencedTests = async () => {
if (PG_DISABLED) return silencedMock();
2022-05-08 01:36:22 +00:00
const query = `SELECT * from ${table}`;
2022-10-08 17:47:46 +00:00
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;
2022-05-08 01:36:22 +00:00
};