umami/lib/db.js

39 lines
884 B
JavaScript
Raw Normal View History

2022-08-28 04:38:35 +00:00
export const PRISMA = 'prisma';
export const POSTGRESQL = 'postgresql';
export const MYSQL = 'mysql';
export const CLICKHOUSE = 'clickhouse';
export const KAFKA = 'kafka';
export const KAFKA_PRODUCER = 'kafka-producer';
2022-08-29 03:20:54 +00:00
export const REDIS = 'redis';
2022-08-28 04:38:35 +00:00
// Fixes issue with converting bigint values
2022-07-07 12:55:43 +00:00
BigInt.prototype.toJSON = function () {
2022-07-16 05:21:37 +00:00
return Number(this);
2022-07-07 12:55:43 +00:00
};
2022-08-27 05:43:31 +00:00
export function getDatabaseType(url = process.env.DATABASE_URL) {
const type = url && url.split(':')[0];
2022-07-15 23:47:38 +00:00
if (type === 'postgres') {
return POSTGRESQL;
}
return type;
}
2022-08-28 04:38:35 +00:00
export async function runQuery(queries) {
const db = getDatabaseType(process.env.CLICKHOUSE_URL || process.env.DATABASE_URL);
2022-07-15 23:47:38 +00:00
if (db === POSTGRESQL || db === MYSQL) {
2022-08-28 04:38:35 +00:00
return queries[PRISMA]();
2022-07-15 23:47:38 +00:00
}
if (db === CLICKHOUSE) {
2022-08-27 05:43:31 +00:00
if (queries[KAFKA]) {
2022-08-05 00:43:47 +00:00
return queries[KAFKA]();
}
2022-08-27 05:43:31 +00:00
2022-07-25 16:47:11 +00:00
return queries[CLICKHOUSE]();
2022-07-15 23:47:38 +00:00
}
}