synthd-bin v1.5.0
synthd-bin
synthd is a CLI utility for generating test data and storing it in your
backend of choice (e.g. mongo, ES, MySQL, Postgres, etc).
The main reason to use the synthd CLI is to be able to generate test data and
store it in your backend, all from JSON files.
Installation
To install synthd as a CLI, assuming that you have node installed, you can
do:
npm i -g synthd-binUsage
Basic example
Let's run through a first basic example of generating a document of a single type and storing it in a Mongo collection. Given this JSON file named basic.json:
{
    "resources": [{
        "name": "Users",
        "fieldName": "users", 
        "fields": [{
            "name": "_id",
            "type": "MongoObjectID"
        }, {
            "name": "firstName",
            "type": "FirstName"
        }, {
            "name": "lastName",
            "type": "LastName"
        }, {
            "name": "email",
            "type": "Email"
        }, {
            "name": "phoneNumber",
            "type": "PhoneNumber"
        }]
    }],
    "actions": [{
        "action": "generateAndStore",
        "storageBackend": "MongoistBackend",
        "serializer": "JSONSerializer",
        "configuration": {
            "mongoURI": "mongodb://localhost:27017/users-with-mongo"
        },
        "generate": [{
            "resource": "Users",
            "collection": "users",
            "count": 5
        }]
    }]
}You could then run:
synthd gen run --file basic.jsonAssuming you had a passwordless Mongo DB listening locally on the default Mongo port (27017), you'll see five documents in the users collection in the users-with-mongo DB. To check:
# In your shell connect to Mongo.
mongo
# Check for the desired documents.
use users-with-mongo
db.users.find({})Future
synthd is a quickly moving target at the moment, but we'll do our best to follow semver appropriately and try to document any migration notes as needed between major versions.
The next major areas that we're looking to develop in, and feel free to contribue to are:
- Schema inference (e.g. 
synthdcan generate scenario files from your DB by sampling documents). - Schema reuse (e.g. you can include or import a common set of resource definitions). - See 
examples/json/reuse/for an example. - More complicated data generation scenarios (e.g. different weights for different data types).