summaryrefslogtreecommitdiff
path: root/backend/file.js
blob: b7509218639c30323f519856e184af6f6d4d1bb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/node

const R = require('ramda'),
  Future = require('fluture'),
  fs = require('fs'),
  fsPath = require('fs-path');

function loadFPayloads(config) {
  return R.curry((file) =>
    Future.node((cb) => fs.readFile(file, 'utf8', cb))
          .chain(Future.encase(JSON.parse))
  );
}

function saveFPayloads(config) {
  return R.curry((file, data) =>
    Future.node((cb) => fsPath.writeFile(file, JSON.stringify(data), cb))
    .map(() => data)
  );
}

function saveFPayloadsTimestamped(config) {
  return R.curry((timestamp, data) =>
    saveFPayloads(config)(config.pattern(timestamp), data)
  );
}

function loadFPayloadsTimestamped(config) {
  return R.curry((timestamp) =>
    loadFPayloads(config)(config.pattern(timestamp))
  );
}

module.exports = {
  loadFPayloads,
  loadFPayloadsTimestamped,
  saveFPayloads,
  saveFPayloadsTimestamped,
};