microdsl
v1.0.3
Published
MicroDSL is a powerful but simple document generator everything from any mysql database. Automatically generate web forms, JSON models for any ORM, and an infinite number of other file structures.
Downloads
1
Maintainers
Readme
MicroDSL
Content generator, takes the structure of any mysql database and automatically creates web forms, ORM models and many other custom content.
Install
Using npm
npm install microdsl --save
Using yarn
yarn add microdsl
Example
Automatically building a simple web form
Step 1: Import package and connect your database
// test.js
var microdsl = require('microdsl')
// Mysql connect config
var config = {
user: 'root',
password: 'root',
host: 'localhost',
database: 'project'
}
microdsl(config, './form.html.microdsl').then(compiled => {
console.log(compiled)
/*
[
'here the content of your generated file',
'here the content of your 2° generated file',
...
]
*/
})
Step 2: Create file input (form.html.microdsl)
Register <%= TABLENAME %>
<form action="/<%= TABLENAME %>" method="post">
<% for(var i=0; i< COLUMNS.length; i++) { %>
<input type="text" name="<%= COLUMNS[i].name %>">
<% } %>
<input type="button" value="Send">
</form>
Step 3: Start compilation
node test.js
Example output for a database table:
Register convocatoria
<form action="/convocatoria" method="post">
<input type="text" name="id">
<input type="text" name="nombre">
<input type="text" name="descripcion">
<input type="text" name="fecha">
<input type="button" value="Send">
</form>
API
MicroDSL has global variables that can be called from the input files
| Variable | Description | Content structure |
|-----------|-------------------|---------------------|
| TABLENAME | Name of the table | string type - 'person' |
| COLUMNS | Columns of the current table | array type - [{ "Type": "varchar(64)","Null": "NO", "Key": "", "Default": null, "Extra": "", "name": "nombre" }, ...]
|
| RELS | Relations of the current table (foreign keys) | ['role.id', ...]
|
If you want to know more about the compilation syntax, see EJS
Functions
| Function | Description | Example |
|--------------|------------------------------------------------------------|----------------------------------|
| to_sequelize | returns the equivalent MySQL object type in Sequelize ORM | <%= to_sequelize('VARCHAR') %>
|
| to_waterline | returns the equivalent MySQL object type in Waterline ORM | <%= to_waterline('VARCHAR') %>
|
| is_required | returns a boolean, true if the MySQL attribute is required | <%= is_required(COLUMNS[i]) %>
|
| tag | render a html tag | <%= tag('div', 'Here content', 'class=test') %>
|
Example of execution of a function:
<% for(var i=0; i< COLUMNS.length; i++) { %>
'<%= COLUMNS[i].name %>': {
type: '<%= to_waterline(COLUMNS[i]) %>',
required: <%= is_required(COLUMNS[i]) %>
},
<% } %>
TODO
- [ ] Create CLI (separate project)
- [ ] More examples
Maintained by juliandavidmr