query-generator.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use strict';
  2. const MySQLQueryGenerator = require('../mysql/query-generator');
  3. class MariaDBQueryGenerator extends MySQLQueryGenerator {
  4. createSchema(schema, options) {
  5. options = Object.assign({
  6. charset: null,
  7. collate: null
  8. }, options || {});
  9. const charset = options.charset ? ` DEFAULT CHARACTER SET ${this.escape(options.charset)}` : '';
  10. const collate = options.collate ? ` DEFAULT COLLATE ${this.escape(options.collate)}` : '';
  11. return `CREATE SCHEMA IF NOT EXISTS ${this.quoteIdentifier(schema)}${charset}${collate};`;
  12. }
  13. dropSchema(schema) {
  14. return `DROP SCHEMA IF EXISTS ${this.quoteIdentifier(schema)};`;
  15. }
  16. showSchemasQuery(options) {
  17. const skip = options.skip && Array.isArray(options.skip) && options.skip.length > 0 ? options.skip : null;
  18. return `SELECT SCHEMA_NAME as schema_name FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('MYSQL', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA'${skip ? skip.reduce( (sql, schemaName) => sql += `,${this.escape(schemaName)}`, '') : ''});`;
  19. }
  20. showTablesQuery(database) {
  21. let query = 'SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = \'BASE TABLE\'';
  22. if (database) {
  23. query += ` AND TABLE_SCHEMA = ${this.escape(database)}`;
  24. } else {
  25. query += ' AND TABLE_SCHEMA NOT IN (\'MYSQL\', \'INFORMATION_SCHEMA\', \'PERFORMANCE_SCHEMA\')';
  26. }
  27. return `${query};`;
  28. }
  29. }
  30. module.exports = MariaDBQueryGenerator;