@pittica/google-business-intelligence-helpers 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,9 @@
15
15
  const {
16
16
  getFiles
17
17
  } = require("@pittica/google-cloud-storage-helpers");
18
+ const {
19
+ format
20
+ } = require("date-and-time");
18
21
  const {
19
22
  getSchemaKeys
20
23
  } = require("./schema");
@@ -50,6 +53,30 @@ exports.mapStorageResponse = (response, schemas = "") => {
50
53
  return Object.values(files).flat(1).map(file => splitName(file));
51
54
  };
52
55
 
56
+ /**
57
+ * Maps the given response and returns grouped and ordered object to import.
58
+ *
59
+ * @param {Array} response Google Cloud Storage response.
60
+ * @param {string} schemas Schema files folder path.
61
+ * @param {string} dateFormat Format string.
62
+ * @returns {object} Bucket files.
63
+ */
64
+ exports.extractStorageResponse = (response, schemas = "", dateFormat = "YYYY-MM-DD") => {
65
+ const days = {};
66
+ const files = this.mapStorageResponse(response, schemas);
67
+ files.forEach(file => {
68
+ const date = format(file.date, dateFormat);
69
+ if (typeof days[date] === "undefined") {
70
+ days[date] = [];
71
+ }
72
+ days[date].push(file);
73
+ });
74
+ return Object.values(Object.keys(days).sort().reduce((obj, key) => {
75
+ obj[key] = days[key];
76
+ return obj;
77
+ }, {})).flat();
78
+ };
79
+
53
80
  /**
54
81
  * Ritrieves a safe name of a file in the given folder in the given bucket.
55
82
  *
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ const {
23
23
  } = require("./contents/sql");
24
24
  const {
25
25
  mapStorageResponse,
26
+ extractStorageResponse,
26
27
  getSafeFilename,
27
28
  getSafeFilenameFromBucket
28
29
  } = require("./contents/storage");
@@ -58,6 +59,7 @@ exports.getSchemaKeys = getSchemaKeys;
58
59
  exports.hasSchema = hasSchema;
59
60
  exports.getSqlFilePath = getSqlFilePath;
60
61
  exports.mapStorageResponse = mapStorageResponse;
62
+ exports.extractStorageResponse = extractStorageResponse;
61
63
  exports.getSafeFilename = getSafeFilename;
62
64
  exports.getSafeFilenameFromBucket = getSafeFilenameFromBucket;
63
65
  exports.getTemporaryTableName = getTemporaryTableName;
@@ -78,11 +78,11 @@ exports.mergeFilename = (date, name, extension, version = 0) => `${format(date,
78
78
  *
79
79
  * @param {object} filedata Data to merge.
80
80
  * @param {boolean} increment A value indicating whether the file version needs to be increased.
81
- * @returns The merged given filename data.
81
+ * @returns {string} The merged given filename data.
82
82
  */
83
83
  exports.mergeFiledata = ({
84
84
  date,
85
85
  name,
86
86
  extension,
87
87
  version
88
- }, increment = false) => mergeFilename(date, name, extension, increment ? typeof version !== "undefined" ? version + 1 : 1 : version);
88
+ }, increment = false) => this.mergeFilename(date, name, extension, increment ? typeof version !== "undefined" ? version + 1 : 1 : version);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pittica/google-business-intelligence-helpers",
3
3
  "private": false,
4
- "version": "1.7.0",
4
+ "version": "1.8.0",
5
5
  "description": "Helpers for business intelligence for Google Cloud.",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {