npm.io
0.0.96 • Published 1 year agoCLI

mro

Licence
MIT
Version
0.0.96
Deps
8
Size
86 kB
Vulns
0
Weekly
0
Stars
1

MRO

NPM Version

Package Test MySQL Test PostgreSQL Test SQLite Test

Model Relations to Objects

ORM but in reverse

Reads the schema of relational database (MySQL/PostgreSQL/SQLite) and outputs to objects in JSON, Javascript or creates Knex migrations.


Why

  • You want to quickly generate a JSON overview of your database.

  • You want to create HTML docs for your database.

  • You want to backup your database schema and version them.

  • You prefer to define your database with SQL syntax.

  • You already have an existing database and don't want to spend additional time remodelling it in your ORM.

  • If you aren't sure how to define migrations on certain column types in Knex.js.

  • If you aren't sure how to model your objects in Objection.js.

  • Why not just try it for fun. It's really easy to use.


How to use

$ npx mro

And follow the prompts. Should be pretty straightforward. If something isn't then create an issue.

Just run it where you want the file(s) to be output to.

Cli Example


Supported formats

Examples are based on the example schema

JSON:

Check out the JSON example output file

Knex.js:

Check out the Knex migration example output file

Learn More

Objection.js:

Check out the Objection examples models folder

Learn More


Possible Environment Variables

MRO tries to read from either the environment or a .env file if the file exists where it is run from.

If it finds any of the following key variations it skips the prompt for that value.

Prompt Environment Variables Explanation
Database Type DATABASE_TYPE, DB_TYPE mysql, postgresql, sqlite
Host DATABASE_HOST, DB_HOST, DB_SERVER, PG_HOST, POSTGRES_HOST, POSTGRESQL_HOST, SQL_HOST Accepts both IP address and localhost
User DATABASE_USER, DB_USER, DB_USERNAME, PG_USER, POSTGRES_USER, POSTGRESQL_USER Defines the username used for database authentication.
Password DATABASE_PASSWORD, DB_PASS, DB_PASSWORD, PG_PASS, PG_PASSWORD, POSTGRES_PASS, POSTGRES_PASSWORD, POSTGRESQL_PASS, POSTGRESQL_PASSWORD, PASSWORD Specifies the password for the database user.
Port DATABASE_PORT, DB_PORT, PG_PORT, POSTGRES_PORT, POSTGRESQL_PORT, SQL_PORT If not defined, it will prompt for and suggest the default port.
Database Name DATABASE, DATABASE_NAME, DB_DATABASE, DB_NAME, PG_DATABASE, PG_DB, POSTGRES_DATABASE, POSTGRES_DB, POSTGRESQL_DATABASE, POSTGRESQL_DB Name of the database.
Database Path DATABASE_PATH, DB_PATH Specifies the file path for SQLite databases.
Output Format MRO_OUTPUT, MRO_OUTPUT_FORMAT, OUTPUT_FORMAT json, html, knex, objection
Knex Module Syntax MRO_MODULE_SYNTAX, MODULE_SYNTAX Valid values: ESM, CJS
MySQL Keys to Keep ALL_KEYS, MRO_ALL_KEYS Used by the test suite. All keys will be included.
All Selected Tables ALL_TABLES, MRO_ALL_TABLES Used by the test suite. All tables will be included.

MRO will never make changes to your database. Credentials are safe and kept locally with MRO.


Tests

Extensive tests are run on every push to the repository.

This is done by using sample databases Chinook (SQLite), Sakila (MySQL) and Pagila (PostgreSQL). After the schema is read, all types of outputs are generated and compared to the expected output.


Create an issue

  • If you experience bugs
  • If you have feature requests
  • If you have general comments/feedback