Skip to content

multum/metalize

Repository files navigation



metalize

Node.js tool for easy work with database metadata


Features

Documentation

Getting Started

npm install metalize pg       # postgres
npm install metalize mysql2   # mysql

Do not use quotes in the name of the object. Metalize automatically adds them when needed

const Metalize = require('metalize');

const metalize = new Metalize({
  dialect: 'postgres', // one of [ 'postgres', 'mysql' ]
  connectionConfig: {
    host: '127.0.0.1',
    port: 5432,
    // other connection options for dialect
  },
});

metalize
  .find({
    tables: ['public.users', 'public.events'],
    sequences: ['public.usersSeq'], // only for 'postgres' dialect
  })
  .then((result) => console.log(result));

/**
Result {
  'tables': Map {
    'public.users' => {
        columns: [ ... ],
        primaryKey: { ... },
        foreignKeys: [ ... ],
        unique: [ ... ],
        indexes: [ ... ],
        checks: [ ... ]
    },
    'public.events' => { ... }
  }
  'sequences': Map {
    'public.usersSeq' => {
      start: '1',
      min: '1',
      max: '9999',
      increment: '1',
      cycle: true,
    }
  }
}
*/

Using an existing connection

const Metalize = require('metalize');
const { Client } = require('pg');

const client = new Client({
  host: '127.0.0.1',
  port: 5432,
  database: 'postgres',
  user: 'postgres',
  password: 'postgres',
});

client.connect();

/**
 * or using 'mysql' dialect
 * @example
 * const { createConnection } = require('mysql2/promise');
 * const client = await createConnection(...)
 */

const metalize = new Metalize('postgres');

metalize
  .find({ tables: ['public.users'] }, { client })
  .then((result) => console.log(result));

/**
 * A new connection will not be opened
 * Instead, the connection from the 'options' will be used
 */

License

Metalize is open source software licensed as MIT.