Neurotic Pumpkin Murderer

    This package has been deprecated

    Author message:

    This fork has been merged into the main package, install mysqldump instead

    @assignar/mysqldump
    TypeScript icon, indicating that this package has built-in type declarations

    2.1.1 • Public • Published

    Mysql Dump

    npm version Build Status

    NPM

    Create a backup of a MySQL database.

    Installation

    yarn add @assignar/mysqldump
    // or
    npm install @assignar/mysqldump
    

    Usage

    import mysqldump from '@assignar/mysqldump'
    // or const mysqldump = require('@assignar/mysqldump')
    
    // dump the result straight to a file
    mysqldump({
        connection: {
            host: 'localhost',
            user: 'root',
            password: '123456',
            database: 'my_database',
        },
        dumpToFile: './dump.sql',
    })
    
    // return the dump from the function and not to a file
    const result = await mysqldump({
        connection: {
            host: 'localhost',
            user: 'root',
            password: '123456',
            database: 'my_database',
        },
    })

    Options

    All the below options are documented in the typescript declaration file:

    export interface ConnectionOptions {
    	/**
    	 * The database host to connect to.
    	 * Defaults to 'localhost'.
    	 */
    	host?: string;
    	/**
    	 * The port on the host to connect to.
    	 * Defaults to 3306.
    	 */
    	port?: number;
    	/**
    	 * The database to dump.
    	 */
    	database: string;
    	/**
    	 * The DB username to use to connect.
    	 */
    	user: string;
    	/**
    	 * The password to use to connect.
    	 */
    	password: string;
    	/**
    	 * The charset to use for the connection.
    	 * Defaults to 'UTF8_GENERAL_CI'.
    	 */
    	charset?: string;
    }
    export interface SchemaDumpOptions {
    	/**
    	 * True to include autoincrement values in schema, false otherwise.
    	 * Defaults to true.
    	 */
    	autoIncrement?: boolean;
    	/**
    	 * True to include engine values in schema, false otherwise.
    	 * Defaults to true.
    	 */
    	engine?: boolean;
    	/**
    	 * True to run a sql formatter over the output, false otherwise.
    	 * Defaults to true.
    	 */
    	format?: boolean;
    	/**
    	 * Options for table dumps
    	 */
    	table?: {
    		/**
    		 * Guard create table calls with an "IF NOT EXIST"
    		 * Defaults to true.
    		 */
    		ifNotExist?: boolean;
    		/**
    		 * Drop tables before creation (overrides `ifNotExist`).
    		 * Defaults to false.
    		 */
    		dropIfExist?: boolean;
    		/**
    		 * Include the `DEFAULT CHARSET = x` at the end of the table definition
    		 * Set to true to include the value form the DB.
    		 * Set to false to exclude it altogether.
    		 * Set to a string to explicitly set the charset.
    		 * Defaults to true.
    		 */
    		charset?: boolean | string;
    	};
    	view?: {
    		/**
    		 * Uses `CREATE OR REPLACE` to define views.
    		 * Defaults to true.
    		 */
    		createOrReplace?: boolean;
    		/**
    		 * Include the `DEFINER = {\`user\`@\`host\` | CURRENT_USER}` in the view definition or not
    		 * Defaults to false.
    		 */
    		definer?: boolean;
    		/**
    		 * Include the `ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}` in the view definition or not
    		 * Defaults to false.
    		 */
    		algorithm?: boolean;
    		/**
    		 * Incldue the `SQL SECURITY {DEFINER | INVOKER}` in the view definition or not
    		 * Defaults to false.
    		 */
    		sqlSecurity?: boolean;
    	};
    }
    export interface TriggerDumpOptions {
    	/**
    	 * The temporary delimiter to use between statements.
    	 * Set to false to not use delmiters
    	 * Defaults to ';;'.
    	 */
    	delimiter?: string | false;
    	/**
    	 * Drop triggers before creation.
    	 * Defaults to false.
    	 */
    	dropIfExist?: boolean;
    	/**
    	 * Include the `DEFINER = {\`user\`@\`host\` | CURRENT_USER}` in the view definition or not
    	 * Defaults to false.
    	 */
    	definer?: boolean;
    }
    export interface DataDumpOptions {
    	/**
    	 * True to run a sql formatter over the output, false otherwise.
    	 * Defaults to true.
    	 */
    	format?: boolean;
    	/**
    	 * Dump data from views.
    	 * Defaults to false.
    	 */
    	includeViewData?: boolean;
    	/**
    	 * Maximum number of rows to include in each multi-line insert statement
    	 * Defaults to 1 (i.e. new statement per row).
    	 */
    	maxRowsPerInsertStatement?: number;
    	/**
    	 * True to return the data in a function, false to not.
    	 * This is useful in databases with a lot of data.
    	 *
    	 * We stream data from the DB to reduce the memory footprint.
    	 * However note that if you want the result returned from the function,
    	 * this will result in a larger memory footprint as the string has to be stored in memory.
    	 *
    	 * Defaults to false if dumpToFile is truthy, or true if not dumpToFile is falsey.
    	 */
    	returnFromFunction?: boolean;
    	/**
    	 * A map of tables to additional where strings to add.
    	 * Use this to limit the number of data that is dumped.
    	 * Defaults to no limits
    	 */
    	where?: {
    		[k: string]: string;
    	};
    }
    export interface DumpOptions {
    	/**
    	 * The list of tables that you want to dump.
    	 * Defaults to all tables (signalled by passing an empty array).
    	 */
    	tables?: string[];
    	/**
    	 * True to use the `tables` options as a blacklist, false to use it as a whitelist.
    	 * Defaults to false.
    	 */
    	excludeTables?: boolean;
    	/**
    	 * Explicitly set to false to not include the schema in the dump.
    	 * Defaults to including the schema.
    	 */
    	schema?: false | SchemaDumpOptions;
    	/**
    	 * Explicitly set to false to not include data in the dump.
    	 * Defaults to including the data.
    	 */
    	data?: false | DataDumpOptions;
    	/**
    	 * Explicitly set to false to not include triggers in the dump.
    	 * Defaults to including the triggers.
    	 */
    	trigger?: false | TriggerDumpOptions;
    }
    export interface Options {
    	/**
    	 * Database connection options
    	 */
    	connection: ConnectionOptions;
    	/**
    	 * Dump configuration options
    	 */
    	dump?: DumpOptions;
    	/**
    	 * Set to a path to dump to a file.
    	 * Exclude to just return the string.
    	 */
    	dumpToFile?: string;
    }
    export interface ColumnList {
    	/**
    	 * Key is the name of the column
    	 */
    	[k: string]: {
    		/**
    		 * The type of the column as reported by the underlying DB.
    		 */
    		type: string;
    		/**
    		 * True if the column is nullable, false otherwise.
    		 */
    		nullable: boolean;
    	};
    }
    export interface Table {
    	/**
    	 * The name of the table.
    	 */
    	name: string;
    	/**
    	 * The raw SQL schema dump for the table.
    	 * Null if configured to not dump.
    	 */
    	schema: string | null;
    	/**
    	 * The raw SQL data dump for the table.
    	 * Null if configured to not dump.
    	 */
    	data: string | null;
    	/**
    	 * The list of column definitions for the table.
    	 */
    	columns: ColumnList;
    	/**
    	 * An ordered list of columns (for consistently outputing as per the DB definition)
    	 */
    	columnsOrdered: string[];
    	/**
    	 * True if the table is actually a view, false otherwise.
    	 */
    	isView: boolean;
    	/**
    	 * A list of triggers attached to the table
    	 */
    	triggers: string[];
    }
    export interface DumpReturn {
    	/**
    	 * The result of the dump
    	 */
    	dump: {
    		/**
    		 * The concatenated SQL schema dump for the entire database.
    		 * Null if configured not to dump.
    		 */
    		schema: string | null;
    		/**
    		 * The concatenated SQL data dump for the entire database.
    		 * Null if configured not to dump.
    		 */
    		data: string | null;
    		/**
    		 * The concatenated SQL trigger dump for the entire database.
    		 * Null if configured not to dump.
    		 */
    		trigger: string | null;
    	};
    	tables: Table[];
    }
    export default function main(inputOptions: Options): Promise<DumpReturn>;
    
    export as namespace mysqldump;

    The MIT License

    Contributing

    Installation

    Make sure to first install all the required development dependencies:

    yarn
    // or
    npm install .
    

    Linting

    We use eslint in conjunction with typescript-eslint-parser for code linting.

    PRs are required to pass the linting with no errors and preferrably no warnings.

    Testing

    Tests can be run via the test script - yarn test / npm test.

    Additionally it's required that you do a build and run your test against the public package to ensure the build doesn't cause regressions - yarn run test-prod / npm run test-prod.

    PRs are required to maintain the 100% test coverage, and all tests must pass successfully.

    Install

    npm i @assignar/mysqldump

    DownloadsWeekly Downloads

    4

    Version

    2.1.1

    License

    MIT

    Unpacked Size

    84.5 kB

    Total Files

    6

    Last publish

    Collaborators