entity-baker
v0.21.5
Published
Generates simple and powerful entity classes for ORM systems, like Doctrine and/or Entity Framework.
Downloads
7
Maintainers
Readme
node-entity-baker
Node.js application / library, which generates simple and powerful entity classes for ORM systems, like Doctrine and/or Entity Framework, wriiten in TypeScript.
Installation
As command line tool:
npm install -g entity-baker
As module:
npm install --save entity-baker
Usage
First create a entities.json
file inside your working directory (can also be in XML or YAML format, s. examples folder):
{
"namespace": "MarcelJoachimKloubert.Database",
"entities": {
"Log": {
"table": "logs",
"columns": {
"id": {
"id": true,
"auto": true,
"type": "int32"
},
"level": {
"null": true,
"type": "int16"
},
"message": "string",
"tag": {
"null": true,
"type": "string"
},
"context": {
"null": true,
"type": "json"
}
}
}
}
}
From command line
# run it from your working directory
entity-baker --doctrine --entity-framework --entity-framework-core
As module
JavaScript
var EntityBaker = require('entity-baker');
TypeScript
import * as EntityBaker from 'entity-baker';
compile
var fs = require('fs');
var entityFile = JSON.parse(
fs.readFileSync('./entities.json', 'utf8')
);
EntityBaker.compile({
cwd: '/path/to/working/directory',
file: entityFile,
outDir: '/path/to/output/directory',
target: 1, // Doctrine
// target: 2 // Entity Framework
// target: 3 // Entity Framework Core
callbacks: {
onBeforeGenerateClass: function(className, target) {
},
onClassGenerated: function(err, className, target) {
}
}
}).then(function() {
// files generated
}, function (err) {
// error while generating files
});
Data types
Type | Doctrine | Entity Framework
------------ | ------------- | -------------
bigint
| bigint | System.Int64 |
bin
| binary | System.Byte[] |
binary
| binary | System.Byte[] |
blob
| blob | System.Byte[] |
bool
| boolean | System.Boolean |
boolean
| boolean | System.Boolean |
date
| date | System.Int64 |
datetime
| datetime | System.Int64 |
datetimetz
| datetimetz | System.DateTimeOffset |
decimal
| decimal | System.Decimal |
float
| float | System.Single |
guid
| guid | System.Guid |
int
| integer | System.Int32 |
int16
| smallint | System.Int16 |
int32
| integer | System.Int32 |
int64
| bigint | System.Int64 |
integer
| integer | System.Int32 |
json
| json | dynamic |
smallint
| smallint | System.Int16 |
str
| string | System.String |
string
| string | System.String |
text
| text | System.String |
time
| time | System.TimeSpan |
uint16
| smallint | System.UInt16 |
uint32
| integer | System.UInt32 |
uint64
| bigint | System.UInt64 |
uuid
| guid | System.Guid |
If you do not define a data type, it set to
int32
, if the column is a primary key, or...string
, if nothing else matches
Support and contribute [↑]
If you like the module, you can support the project by sending a donation via PayPal to me.
To contribute, you can open an issue and/or fork this repository.
To work with the code:
- clone this repository
- create and change to a new branch, like
git checkout -b my_new_feature
- run
npm install
from your project folder - edit and debug in your favorite editor, like Visual Studio Code
- commit your changes to your new branch and sync it with your forked GitHub repo
- make a pull request
The API documentation can be found here.