@agtech/ms-gen

A node js tool to generate a microservice to do CRUD operation over REST API for the given JSON Schema.

Usage no npm install needed!

<script type="module">
  import agtechMsGen from 'https://cdn.skypack.dev/@agtech/ms-gen';
</script>

README

Microservice Generator

A node js tool to generate a microservice to do CRUD operation over REST API for the given JSON Schema.

Quick Use

npm install -g @agtech/ms-gen

msgen <JSON_SCHEMA_FILE>

# The project will be generated in the same folder where JSON_SCHEMA_FILE file is present.

Use like a node module

$ npm install --save @agtech/ms-gen
  • import @agtech/ms-gen to your project and pass the schema json.
const generator = require("@agtech/ms-gen");

var data = {
  name: "User Details",
  api: "/user",
  port: 3000,
  database: "users",
  schema: {
    //JSON schema
  },
};

generator.createProject(data);

Full CLI Example

$ npm install -g @agtech/ms-gen

$ msgen -h

Usage: msgen [options] <name>

Options:

  -V, --version  output the version number
  -d, --dir      Directory name
  -h, --help     output usage information


# [-d generates microservice for all the schema files in a directory

$ msgen schema.json

#The project folder will be generated at the location of schema.json file

JSON Data Structure

{
    "name":"User Details", //Required. Name of this microservice
    "api":"/user", //Optional. API URL of this microservice
    "port":3000, //Optional. Port number in which this microservice will be running
    "database":"users", //Optional. Name of database in which this microservice will create it's collection
    "schema":{
        //JSON schema
    }
}
  • Example JSON schema
{
    "$id": "https://example.com/person.schema.json",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Person",
    "type": "object",
    "properties": {
        "firstName": {
        "type": "string",
        "description": "The person's first name."
        },
        "lastName": {
        "type": "string",
        "description": "The person's last name."
        },
        "age": {
        "description": "Age in years which must be equal to or greater than zero.",
        "type": "integer",
        "minimum": 0
        }
    }
}

License

MIT