0.0.95 • Published 6 months ago

mro v0.0.95

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

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.

PromptEnvironment VariablesExplanation
Database TypeDATABASE_TYPE, DB_TYPEmysql, postgresql, sqlite
HostDATABASE_HOST, DB_HOST, DB_SERVER, PG_HOST, POSTGRES_HOST, POSTGRESQL_HOST, SQL_HOSTAccepts both IP address and localhost
UserDATABASE_USER, DB_USER, DB_USERNAME, PG_USER, POSTGRES_USER, POSTGRESQL_USER, USER, USERNAMEDefines the username used for database authentication.
PasswordDATABASE_PASSWORD, DB_PASS, DB_PASSWORD, PG_PASS, PG_PASSWORD, POSTGRES_PASS, POSTGRES_PASSWORD, POSTGRESQL_PASS, POSTGRESQL_PASSWORD, PASSWORDSpecifies the password for the database user.
PortDATABASE_PORT, DB_PORT, PG_PORT, POSTGRES_PORT, POSTGRESQL_PORT, SQL_PORTIf not defined, it will prompt for and suggest the default port.
Database NameDATABASE, DATABASE_NAME, DB_DATABASE, DB_NAME, PG_DATABASE, PG_DB, POSTGRES_DATABASE, POSTGRES_DB, POSTGRESQL_DATABASE, POSTGRESQL_DBName of the database.
Database PathDATABASE_PATH, DB_PATHSpecifies the file path for SQLite databases.
Output FormatMRO_OUTPUT, MRO_OUTPUT_FORMAT, OUTPUT_FORMATjson, html, knex, objection
Knex Module SyntaxMRO_MODULE_SYNTAX, MODULE_SYNTAXValid values: ESM, CJS
MySQL Keys to KeepALL_KEYS, MRO_ALL_KEYSUsed by the test suite. All keys will be included.
All Selected TablesALL_TABLES, MRO_ALL_TABLESUsed by the test suite. All tables will be included.

MRO will never make changes to your database. Credentials are safe 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

0.0.88

8 months ago

0.0.89

8 months ago

0.0.95

6 months ago

0.0.90

8 months ago

0.0.91

8 months ago

0.0.92

8 months ago

0.0.93

8 months ago

0.0.94

6 months ago

0.0.87

1 year ago

0.0.84

1 year ago

0.0.85

1 year ago

0.0.86

1 year ago

0.0.81

1 year ago

0.0.82

1 year ago

0.0.83

1 year ago

0.0.8

2 years ago

0.0.5

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.4

4 years ago

0.0.1

4 years ago