entity-baker
TypeScript icon, indicating that this package has built-in type declarations

0.21.5 • Public • Published

npm npm

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.

Package Sidebar

Install

npm i entity-baker

Weekly Downloads

1

Version

0.21.5

License

LGPL-3.0

Last publish

Collaborators

  • mkloubert