@pi-r/gcp 0.6.2 → 0.6.3

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.
Files changed (2) hide show
  1. package/client/index.js +28 -13
  2. package/package.json +5 -5
package/client/index.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProjectId = exports.createBucketRequest = exports.setPredefinedAcl = exports.setPublicRead = exports.executeBatchQuery = exports.executeQuery = exports.deleteObjectsV2 = exports.deleteObjects = exports.setBucketWebsite = exports.setBucketPolicy = exports.createBucketV2 = exports.createBucket = exports.createDatabaseClient = exports.createStorageClient = exports.validateDatabase = exports.validateStorage = exports.isFirebaseApp = void 0;
4
4
  const path = require("path");
5
5
  const storage = require("@google-cloud/storage");
6
- const firestore = require("@google-cloud/firestore");
6
+ const firestore_1 = require("@google-cloud/firestore");
7
7
  const util_1 = require("@e-mc/cloud/util");
8
8
  const types_1 = require("@e-mc/types");
9
9
  const Module = require("@e-mc/module");
@@ -135,7 +135,7 @@ function createStorageClient(credential, bucket) {
135
135
  throw err;
136
136
  }
137
137
  }
138
- getProjectId(credential);
138
+ getProjectId(credential, false);
139
139
  return new storage.Storage(credential);
140
140
  }
141
141
  exports.createStorageClient = createStorageClient;
@@ -144,13 +144,13 @@ function createDatabaseClient(credential, data) {
144
144
  try {
145
145
  let product, name, database, table, query;
146
146
  if (data) {
147
- ({ product, name, table, query } = data);
147
+ ({ product, name, table, query, database } = data);
148
148
  }
149
149
  if (product === 'firebase' || isFirebaseApp(credential)) {
150
150
  packageName = getFirebasePackageName(credential);
151
151
  return getApp(credential, true);
152
152
  }
153
- getProjectId(credential);
153
+ getProjectId(credential, true);
154
154
  if (data) {
155
155
  if (product === 'spanner' || !product && name && database && (query || table)) {
156
156
  const { Spanner } = require(packageName = '@google-cloud/spanner');
@@ -174,7 +174,7 @@ function createDatabaseClient(credential, data) {
174
174
  this.checkPackage(err, packageName, { passThrough: true });
175
175
  throw err;
176
176
  }
177
- return new firestore.Firestore(credential);
177
+ return new firestore_1.Firestore(credential);
178
178
  }
179
179
  exports.createDatabaseClient = createDatabaseClient;
180
180
  async function createBucket(credential, bucket, publicRead, service = 'gcp') {
@@ -700,7 +700,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
700
700
  if ((0, types_1.isPlainObject)(item.options)) {
701
701
  items.push(item.options);
702
702
  }
703
- rows = await db.getAll(...items);
703
+ rows = (await db.getAll(...items)).filter(value => value.exists).map(value => value.data());
704
704
  }
705
705
  else {
706
706
  const doc = db.collection(table).doc(id);
@@ -723,7 +723,17 @@ async function executeBatchQuery(credential, batch, sessionKey) {
723
723
  for (const args of query) {
724
724
  if ((0, types_1.isArray)(args)) {
725
725
  const method = args[0];
726
+ const params = args.slice(1);
726
727
  switch (method) {
728
+ case 'whereAnd':
729
+ case 'whereOr':
730
+ if (params.every(p => Array.isArray(p))) {
731
+ db = db.where(firestore_1.Filter[method === 'whereAnd' ? 'and' : 'or'](...params.map((p) => firestore_1.Filter.where(p[0], p[1], p[2]))));
732
+ }
733
+ else {
734
+ throw (0, types_1.errorMessage)(method, 'Conditionals are not in array format', Cloud.asString(params));
735
+ }
736
+ break;
727
737
  case 'endAt':
728
738
  case 'endBefore':
729
739
  case 'limit':
@@ -735,7 +745,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
735
745
  case 'startAt':
736
746
  case 'where':
737
747
  case 'withConverter':
738
- db = db[method].apply(db, args.slice(1)); // eslint-disable-line prefer-spread
748
+ db = db[method].apply(db, params); // eslint-disable-line prefer-spread
739
749
  break;
740
750
  }
741
751
  }
@@ -888,19 +898,24 @@ function createBucketRequest(credential) {
888
898
  return options;
889
899
  }
890
900
  exports.createBucketRequest = createBucketRequest;
891
- function getProjectId(credential) {
901
+ function getProjectId(credential, cache) {
902
+ let projectId = credential.projectId;
903
+ if (!cache && projectId) {
904
+ return projectId;
905
+ }
892
906
  let pathname = credential.keyFilename || credential.keyFile;
893
- if (pathname && Module.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Module.isPath(pathname = path.resolve(pathname))) {
907
+ if (pathname && Cloud.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Cloud.isPath(pathname = path.resolve(pathname))) {
894
908
  if (credential.keyFilename) {
895
909
  credential.keyFilename = pathname;
896
910
  }
897
911
  else {
898
912
  credential.keyFile = pathname;
899
913
  }
900
- if (!credential.projectId) {
914
+ if (!projectId) {
901
915
  try {
902
- const projectId = require(pathname).project_id;
903
- if ((0, types_1.isString)(projectId)) {
916
+ const id = require(pathname).project_id;
917
+ if ((0, types_1.isString)(id)) {
918
+ projectId = id;
904
919
  credential.projectId = projectId;
905
920
  }
906
921
  }
@@ -908,6 +923,6 @@ function getProjectId(credential) {
908
923
  }
909
924
  }
910
925
  }
911
- return credential.projectId;
926
+ return projectId;
912
927
  }
913
928
  exports.getProjectId = getProjectId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-r/gcp",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Google (GCP) cloud functions for E-mc.",
5
5
  "main": "client/index.js",
6
6
  "publishConfig": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/anpham6/pi-r.git",
11
+ "url": "git+https://github.com/anpham6/pi-r.git",
12
12
  "directory": "src/cloud/gcp"
13
13
  },
14
14
  "keywords": [
@@ -20,9 +20,9 @@
20
20
  "license": "MIT",
21
21
  "homepage": "https://github.com/anpham6/pi-r#readme",
22
22
  "dependencies": {
23
- "@e-mc/cloud": "^0.8.2",
24
- "@e-mc/module": "^0.8.2",
25
- "@e-mc/types": "^0.8.2",
23
+ "@e-mc/cloud": "^0.8.3",
24
+ "@e-mc/module": "^0.8.3",
25
+ "@e-mc/types": "^0.8.3",
26
26
  "@google-cloud/firestore": "^7.2.0",
27
27
  "@google-cloud/storage": "^7.7.0"
28
28
  }