Generating Mongo / Mongoose Models

Having come from the .NET world, I have always loved the ability to whip up a quick model diagram using the SQL Server Diagram Tool. It's painless to model your data objects, and capture a good chunk of your business, for LOB applications. And, while in that world, I relied upon the CodeSmith Generator to spit out all sorts of documents from my database.

Alas, having moved to Mac, Linux, and MEAN Stack, all this is in the past.

... until now.

DbSchema is really what started me thinking down this line. It's written in Java and, therefore, is cross-platform. I have used it successfully on all three platforms, to replace the SQL Server Diagram Tool, and it works flawlessly.

Here's the cool part: unlike the M$ tool, DbSchema stores its data in good ole' XML. So, of course, I've created a few tools to add some awesome sauce to it...

DbSchema Parser dbschema-parser

Long story short, dbschema-parser allows you to walk the data structures using NodeJS. You may navigate from Database, to Schema, to Table, to Column, and back up again, or in any direction.

DbSchema Parser CLI dbschema-parser-cli

Since I want to use the Parser to generate files, I'm gonna need a CLI. That's what this project brings to thy table.

DbSchema Mongoose dbschema-mongoose

Under the hood this one is ugly as sin. However, it's the thang that gives the two projects, above, some coolness. It basically looks at your DbSchema's data file and spits out the equivalent Mongoose model files.

Side note...

I'm also using Keybaord Maestro, on Mac, and AutoHotkey, on Windows, to help me bang out complex data diagrams with only a few keystrokes. So, that helps a great deal.

Why create this?

In short, there's nothing stable that provides this. DbSchema is the only tool that comes close to the stability and fluidity of the SQL Server Diagram Tool. And, as for generating models, there's nothing out there that feeds from an elegant UI. Plus, although there's a tonne of shtuff with Yarn and Yeoman, nothing feels fully baked.

Anywhoo, I hope this helps someone. It's ugly. I know. If anyone shows genuine interest in it, I'll see about extending it.