Refactor get database type logic.

This commit is contained in:
Mike Cao 2022-08-26 22:43:31 -07:00
parent b29cece7ef
commit 3327bcf5a3
4 changed files with 36 additions and 23 deletions

View file

@ -1,39 +1,31 @@
import { POSTGRESQL, RELATIONAL, MYSQL, KAFKA } from 'lib/constants';
import { CLICKHOUSE } from 'lib/constants';
import { POSTGRESQL, RELATIONAL, MYSQL, KAFKA, CLICKHOUSE } from 'lib/constants';
BigInt.prototype.toJSON = function () {
return Number(this);
};
export function getDatabase(database, databaseType, fallback) {
const type = databaseType || (database && database.split(':')[0]);
export function getDatabaseType(url = process.env.DATABASE_URL) {
const type = process.env.DATABASE_TYPE || (url && url.split(':')[0]);
if (type === 'postgres') {
return POSTGRESQL;
}
if (!type) {
if (fallback) {
return getDatabase(fallback);
}
return null;
}
return type;
}
export async function runAnalyticsQuery(queries) {
const db = getDatabase(process.env.ANALYTICS_URL, null, process.env.DATABASE_URL);
const db = getDatabaseType(process.env.ANALYTICS_URL || process.env.DATABASE_URL);
if (db === POSTGRESQL || db === MYSQL) {
return queries[RELATIONAL]();
}
if (db === CLICKHOUSE) {
const kafka = getDatabase(process.env.KAFKA_URL);
if (kafka === KAFKA && queries[KAFKA]) {
if (queries[KAFKA]) {
return queries[KAFKA]();
}
return queries[CLICKHOUSE]();
}
}