mro v0.0.95
MRO
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.
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
Objection.js:
Check out the Objection examples models folder
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 , USER , USERNAME | 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 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
8 months ago
8 months ago
6 months ago
8 months ago
8 months ago
8 months ago
8 months ago
6 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago