56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
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;
|
|
};
|