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.
To install synthd
as a CLI, assuming that you have node installed, you can
do:
npm i -g synthd-bin
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.json
Assuming 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({})
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.
synthd
can 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).