Skip to content

Commit aa0ae6e

Browse files
committed
Merge pull request #4 from debitoor/defaulut-prepare-transform
added default prepareTransform function
2 parents fed21e8 + f584567 commit aa0ae6e

File tree

6 files changed

+54
-13
lines changed

6 files changed

+54
-13
lines changed

README.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@ SETUP
88
You should have `transforms` folder with file `*.js` that represents transform for your entity
99
Example of transforms file you can find [here](https://github.com/e-conomic/sir-transformalot/blob/master/test/testApp/transforms/entity.js)
1010

11+
Configure transform
12+
==========================
13+
// entity.js
14+
module.exports = {
15+
v2: {
16+
V1toV2: {
17+
transform(data) {
18+
return data;
19+
},
20+
21+
// optional
22+
prepareTransform(id, mongo, callback) {
23+
mongo.findOne({id}, callback);
24+
}
25+
}
26+
}
27+
}
28+
1129
Transform for single object
1230
===========================
1331
```js
@@ -22,4 +40,4 @@ pump(db.getDataStream(), transformStream, JSONStream.stringify(), res, function(
2240
return next(err);
2341
};
2442
});
25-
```
43+
```

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sir-transformalot",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"description": "Transform data between versions",
55
"main": "sir-transformalot.js",
66
"scripts": {

sir-transformalot.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,13 @@ module.exports = function(transforms) {
7575
}
7676

7777
function createPrepareTransformTask(id, _version, _transformationCode, mongo) {
78-
return function(cb) {
79-
transforms['v' + _version][_transformationCode].prepareTransform(id, mongo, cb);
80-
};
78+
var prepareTransform = transforms['v' + _version][_transformationCode].prepareTransform ||
79+
function (id, mongo, cb) {cb();};
80+
return prepareTransform.bind(null, id, mongo);
8181
}
8282

8383
return {
8484
transformObject: transformObject,
8585
getTransformStream: getTransformStream
8686
};
87-
};
87+
};

test/integration/integration.spec.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,19 @@ describe('integration tests', function () {
6868
dataVersion: 3,
6969
id: 2,
7070
fieldFromV3: true
71+
}],
72+
v4: [{
73+
dataVersion: 4,
74+
id: 1,
75+
fieldFromV3: true
76+
}, {
77+
dataVersion: 4,
78+
id: 2,
79+
fieldFromV3: true
7180
}]
7281
};
7382

74-
['v1', 'v2', 'v3'].forEach(function(version) {
83+
['v1', 'v2', 'v3', 'v4'].forEach(function(version) {
7584
describe('GET ' + version, function () {
7685
before(function (done) {
7786
get('entities/' + version, done);
@@ -114,4 +123,4 @@ describe('integration tests', function () {
114123
});
115124
});
116125
});
117-
});
126+
});

test/testApp/app.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ app.get('/ping', function(req, res) {
1818
});
1919
});
2020

21-
app.get('/entity/:id/:version(v3|v2|v1)', function(req, res, next) {
21+
app.get('/entity/:id/:version(v4|v3|v2|v1)', function(req, res, next) {
2222
var parsedId = parseInt(req.params.id);
2323
var dataV3 = db.getEntityById(parsedId);
2424
transforms.entity.transformObject(parsedId, dataV3, 'v3', req.params.version, 'mongo :p', function(err, endVersionData) { //make options object?
@@ -29,7 +29,7 @@ app.get('/entity/:id/:version(v3|v2|v1)', function(req, res, next) {
2929
});
3030
});
3131

32-
app.get('/entities/:version(v3|v2|v1)', function(req, res, next) {
32+
app.get('/entities/:version(v4|v3|v2|v1)', function(req, res, next) {
3333
res.header('content-type', 'application/json; charset=utf-8');
3434
var mongo = "Yeap, this is mongo :P";
3535
var transformStream = transforms.entity.getTransformStream('v3', req.params.version, mongo);
@@ -41,7 +41,7 @@ app.get('/entities/:version(v3|v2|v1)', function(req, res, next) {
4141
});
4242

4343

44-
app.post('/entity/:version(v3|v2|v1)', function(req, res, next) {
44+
app.post('/entity/:version(v4|v3|v2|v1)', function(req, res, next) {
4545
var parsedId = req.body.id;
4646
var dataVX = req.body;
4747
//upgradeData
@@ -63,4 +63,4 @@ app.post('/entity/:version(v3|v2|v1)', function(req, res, next) {
6363
});
6464

6565
server.listen(8983);
66-
console.log('Starting test app on http://localhost:8983');
66+
console.log('Starting test app on http://localhost:8983');

test/testApp/transforms/entity.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,22 @@ var entityConfig = {
7070
}, 1);
7171
}
7272
}
73+
},
74+
v4: {
75+
V3toV4: {
76+
transform: function(data) {
77+
data.dataVersion = 4;
78+
return data;
79+
}
80+
},
81+
V4toV3: {
82+
transform: function(data) {
83+
data.dataVersion = 3;
84+
return data;
85+
}
86+
}
7387
}
7488
};
7589

7690
var transformalot = require('../../../sir-transformalot');
77-
module.exports = transformalot(entityConfig);
91+
module.exports = transformalot(entityConfig);

0 commit comments

Comments
 (0)