/** * A Collection of settings */ export interface ConfigOptions { /** * The number of nodes that will be ran in parallel, * if the number of nodes is smaller than the parallels, * it will simply divide them evenly and ignore extra parallels */ parallel_nodes: number, /** * The amount of tasks that a node parallel can run at once, * these basically are mysql_dump processes. */ parallel_node_tasks: number, /** * This option should be set to ON if you would like the dumps * to only export tables. */ separate_into_tables: boolean, /** * A string of CLI options for the mysql dump command */ mysql_dump_settings: string, } /** * Basic configuration interface for the mailer */ export interface SMTPConfig { /** * The email address to globally use for sending * out email from. */ email_from : string, /** * Email username login details */ username : string, /** * Email password login details */ password : string, /** * The SMTP host of the email */ host : string, /** * The port to send to, common ports are 465 ( ssl ), 587 for TLS */ port : number, /** * Secure Connection */ ssl : boolean, } export interface NodeConnectionMail { /** * Enable or disable email sending */ enabled : boolean, /** * The main user to send out the email to */ email_to: string, /** * A list of email addresses to CC into the email */ email_cc: Array, } export interface DatabaseFilter { /** * A filter where anything inside of it is going to be ignored */ blacklist?: null | Array, /** * A filter where anything out of it will be ignored */ whitelist?: null | Array, } /** * A Node Connection for the database backup */ export interface NodeConnection { /** * The name for the connection to be identified by */ name : string, /** * Send out console debug messages */ debug : string, /** * Keep a log file for this connection independently */ log : boolean, /** * Mail configuration details */ mail? : NodeConnectionMail | null, /** * Ip Address of the database */ hostname : string, /** * The username for the database connection */ username : string, /** * The password to connect to the database with */ password : string, /** * The database filter, this can contain a blacklist or a whitelist. */ databases?: DatabaseFilter } export interface ConfigObject { /** * A list of global settings for the behaviour * of the exporter */ options: ConfigOptions, /** * SMTP details for sending out email notifications * for real-time updates on erros, health, and backups. */ smtp: SMTPConfig, /** * An array of Node connections that we should backup */ nodes: Array } export function getConfig() : ConfigObject | null { return null; }