0.21.5 • Published 6 years ago

entity-baker v0.21.5

Weekly downloads
3
License
LGPL-3.0
Repository
github
Last release
6 years ago

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

TypeDoctrineEntity Framework
bigintbigintSystem.Int64
binbinarySystem.Byte[]
binarybinarySystem.Byte[]
blobblobSystem.Byte[]
boolbooleanSystem.Boolean
booleanbooleanSystem.Boolean
datedateSystem.Int64
datetimedatetimeSystem.Int64
datetimetzdatetimetzSystem.DateTimeOffset
decimaldecimalSystem.Decimal
floatfloatSystem.Single
guidguidSystem.Guid
intintegerSystem.Int32
int16smallintSystem.Int16
int32integerSystem.Int32
int64bigintSystem.Int64
integerintegerSystem.Int32
jsonjsondynamic
smallintsmallintSystem.Int16
strstringSystem.String
stringstringSystem.String
texttextSystem.String
timetimeSystem.TimeSpan
uint16smallintSystem.UInt16
uint32integerSystem.UInt32
uint64bigintSystem.UInt64
uuidguidSystem.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.