, , , .
,
const data = {
"id": 123,
"modules": [{
"id": 1,
"results": [{
"status": "fail",
"issues": [
{"type": "change", "status": "warn", "data": {}},
{"type": "remove", "status": "warn", "data": {}},
{"type": "change", "status": "warn", "data": {}}
]
}]
},{
"id": 2,
"results": [{
"status": "pass",
"issues": [
{"type": "change", "status": "warn", "data": {}},
{"type": "remove", "status": "warn", "data": {}},
{"type": "change", "status": "warn", "data": {}}
]
}]
}]
};
, , . modules, results issues.
, , , status.
:
const modulesLens = lensProp('modules')
const resultsLens = lensProp('results')
const issuesLens = lensProp('issues')
const statusLens = lensProp('status')
, , , , . ( , )
const approveIssues = over(
modulesLens,
map(over(
resultsLens,
map(over(
issuesLens,
map(set(statusLens, 'approve'))
))
))
)
, , feed approvedIssues , , data.
, .
//Running this
const approvedData = approveIssues(data)
/* Outputs this
{
"id": 123,
"modules": [{
"id": 1,
"results": [{
"issues": [
{"data": {}, "status": "approve", "type": "change"},
{"data": {}, "status": "approve", "type": "remove"},
{"data": {}, "status": "approve", "type": "change"}
],
"status": "fail"
}]}, {
"id": 2,
"results": [{
"issues": [
{"data": {}, "status": "approve", "type": "change"},
{"data": {}, "status": "approve", "type": "remove"},
{"data": {}, "status": "approve", "type": "change"}],
"status": "pass"
}]}
]}
*/
compose, , .