94 lines
2.1 KiB
JavaScript
94 lines
2.1 KiB
JavaScript
import Knex from 'knex';
|
|
import { knexSnakeCaseMappers } from 'objection';
|
|
import color from 'colorette';
|
|
import config from '../src/config';
|
|
// import { systemKnexConfig } from '../src/config/knexConfig';
|
|
|
|
function initSystemKnex() {
|
|
return Knex({
|
|
client: config.system.db_client,
|
|
connection: {
|
|
host: config.system.db_host,
|
|
user: config.system.db_user,
|
|
password: config.system.db_password,
|
|
database: config.system.db_name,
|
|
charset: 'utf8',
|
|
},
|
|
migrations: {
|
|
directory: config.system.migrations_dir,
|
|
},
|
|
seeds: {
|
|
directory: config.system.seeds_dir,
|
|
},
|
|
pool: { min: 0, max: 7 },
|
|
...knexSnakeCaseMappers({ upperCase: true }),
|
|
});
|
|
}
|
|
|
|
function getAllSystemTenants(knex) {
|
|
return knex('tenants');
|
|
}
|
|
|
|
function initTenantKnex(organizationId) {
|
|
return Knex({
|
|
client: config.tenant.db_client,
|
|
connection: {
|
|
host: config.tenant.db_host,
|
|
user: config.tenant.db_user,
|
|
password: config.tenant.db_password,
|
|
database: `${config.tenant.db_name_prefix}${organizationId}`,
|
|
charset: config.tenant.charset,
|
|
},
|
|
migrations: {
|
|
directory: config.tenant.migrations_dir,
|
|
},
|
|
seeds: {
|
|
directory: config.tenant.seeds_dir,
|
|
},
|
|
pool: { min: 0, max: 5 },
|
|
...knexSnakeCaseMappers({ upperCase: true }),
|
|
})
|
|
}
|
|
|
|
function exit(text) {
|
|
if (text instanceof Error) {
|
|
console.error(
|
|
color.red(`${text.detail ? `${text.detail}\n` : ''}${text.stack}`)
|
|
);
|
|
} else {
|
|
console.error(color.red(text));
|
|
}
|
|
process.exit(1);
|
|
}
|
|
|
|
function success(text) {
|
|
console.log(text);
|
|
process.exit(0);
|
|
}
|
|
|
|
function log(text) {
|
|
console.log(text);
|
|
}
|
|
|
|
function getDeepValue(prop, obj) {
|
|
if (!Object.keys(obj).length) { return []; }
|
|
|
|
return Object.entries(obj).reduce((acc, [key, val]) => {
|
|
if (key === prop) {
|
|
acc.push(val);
|
|
} else {
|
|
acc.push(Array.isArray(val) ? val.map(getIds).flat() : getIds(val));
|
|
}
|
|
return acc.flat();
|
|
}, []);
|
|
}
|
|
|
|
export {
|
|
initTenantKnex,
|
|
initSystemKnex,
|
|
getAllSystemTenants,
|
|
exit,
|
|
success,
|
|
log,
|
|
getDeepValue,
|
|
} |